From 163c4c467d4ab596c8acc71e8c241783514e0752 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 00:14:33 +0000 Subject: [PATCH] deploy: 4f0f3a4debd0c84870a8ce285655a296e6f84f83 --- .nojekyll | 0 api/cassini_iss.html | 824 ++++ api/cassini_uvis.html | 1019 +++++ api/config.html | 845 ++++ api/ctx.html | 3067 +++++++++++++ api/diviner.html | 670 +++ api/exceptions.html | 622 +++ api/geotools.html | 914 ++++ api/hirise.html | 1695 +++++++ api/pds.apps.html | 1669 +++++++ api/pds.crism_index.html | 927 ++++ api/pds.ctx_index.html | 686 +++ api/pds.indexes.html | 784 ++++ api/pds.lroc_index.html | 613 +++ api/pds.opusapi.html | 611 +++ api/pds.utils.html | 746 +++ api/spice.kernels.html | 1984 ++++++++ api/utils.html | 1171 +++++ index.html | 1114 +++++ robots.txt | 1 + search.json | 429 ++ site_libs/bootstrap/bootstrap-icons.css | 2018 +++++++++ site_libs/bootstrap/bootstrap-icons.woff | Bin 0 -> 164168 bytes site_libs/bootstrap/bootstrap.min.css | 10 + site_libs/bootstrap/bootstrap.min.js | 7 + site_libs/clipboard/clipboard.min.js | 7 + site_libs/quarto-html/anchor.min.js | 9 + site_libs/quarto-html/popper.min.js | 6 + .../quarto-syntax-highlighting.css | 203 + site_libs/quarto-html/quarto.js | 902 ++++ site_libs/quarto-html/tippy.css | 1 + site_libs/quarto-html/tippy.umd.min.js | 2 + site_libs/quarto-nav/headroom.min.js | 7 + site_libs/quarto-nav/quarto-nav.js | 277 ++ site_libs/quarto-search/autocomplete.umd.js | 3 + site_libs/quarto-search/fuse.min.js | 9 + site_libs/quarto-search/quarto-search.js | 1140 +++++ sitemap.xml | 95 + styles.css | 18 + .../figure-html/cell-19-output-1.png | Bin 0 -> 428745 bytes tutorials/apps_demo.html | 2725 +++++++++++ tutorials/assets/NAIF_archives.png | Bin 0 -> 157046 bytes tutorials/pdw2023_demo.html | 4010 +++++++++++++++++ tutorials/pdw_2023.html | 1472 ++++++ tutorials/pdw_2023.html.pptx | Bin 0 -> 188107 bytes tutorials/spice_howtos.html | 708 +++ tutorials/tutorial.html | 1743 +++++++ 47 files changed, 35763 insertions(+) create mode 100644 .nojekyll create mode 100644 api/cassini_iss.html create mode 100644 api/cassini_uvis.html create mode 100644 api/config.html create mode 100644 api/ctx.html create mode 100644 api/diviner.html create mode 100644 api/exceptions.html create mode 100644 api/geotools.html create mode 100644 api/hirise.html create mode 100644 api/pds.apps.html create mode 100644 api/pds.crism_index.html create mode 100644 api/pds.ctx_index.html create mode 100644 api/pds.indexes.html create mode 100644 api/pds.lroc_index.html create mode 100644 api/pds.opusapi.html create mode 100644 api/pds.utils.html create mode 100644 api/spice.kernels.html create mode 100644 api/utils.html create mode 100644 index.html create mode 100644 robots.txt create mode 100644 search.json create mode 100644 site_libs/bootstrap/bootstrap-icons.css create mode 100644 site_libs/bootstrap/bootstrap-icons.woff create mode 100644 site_libs/bootstrap/bootstrap.min.css create mode 100644 site_libs/bootstrap/bootstrap.min.js create mode 100644 site_libs/clipboard/clipboard.min.js create mode 100644 site_libs/quarto-html/anchor.min.js create mode 100644 site_libs/quarto-html/popper.min.js create mode 100644 site_libs/quarto-html/quarto-syntax-highlighting.css create mode 100644 site_libs/quarto-html/quarto.js create mode 100644 site_libs/quarto-html/tippy.css create mode 100644 site_libs/quarto-html/tippy.umd.min.js create mode 100644 site_libs/quarto-nav/headroom.min.js create mode 100644 site_libs/quarto-nav/quarto-nav.js create mode 100644 site_libs/quarto-search/autocomplete.umd.js create mode 100644 site_libs/quarto-search/fuse.min.js create mode 100644 site_libs/quarto-search/quarto-search.js create mode 100644 sitemap.xml create mode 100644 styles.css create mode 100644 tutorials/PDW2023_Demo_files/figure-html/cell-19-output-1.png create mode 100644 tutorials/apps_demo.html create mode 100644 tutorials/assets/NAIF_archives.png create mode 100644 tutorials/pdw2023_demo.html create mode 100644 tutorials/pdw_2023.html create mode 100644 tutorials/pdw_2023.html.pptx create mode 100644 tutorials/spice_howtos.html create mode 100644 tutorials/tutorial.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/api/cassini_iss.html b/api/cassini_iss.html new file mode 100644 index 0000000..493ca8d --- /dev/null +++ b/api/cassini_iss.html @@ -0,0 +1,824 @@ + + + + + + + + + + +planetarypy - Cassini ISS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Cassini ISS

+
+ +
+
+ Data getters for Cassini ISS image data +
+
+ + +
+ + + + +
+ + +
+ + +
+
storage_root
+
+
Path('/Users/maye/planetarypy_data/missions/cassini/iss')
+
+
+
+

source

+
+

DataRetriever

+
+
 DataRetriever (pid)
+
+

Initialize self. See help(type(self)) for accurate signature.

+ + + + + + + + + + + + + +
Details
pidPDS product_id, e.g. N1454725799
+
+
pid = "N1454725799"
+
+
+
dm = DataRetriever(pid)
+
+
+
dm.raw_fname
+
+
'N1454725799_1.IMG'
+
+
+
+
dm.raw_data_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.IMG')
+
+
+
+
dm.raw_label_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.LBL')
+
+
+
+
dm.raw_prefix_fmt_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/prefix2.fmt')
+
+
+
+
dm.raw_tlmtab_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/tlmtab.fmt')
+
+
+
+
dm.calib_data_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.IMG')
+
+
+
+

source

+
+
+

ISS

+
+
 ISS (pid)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
id = "N1874681996"
+id = "N1454725799"
+# id = "N1878581142"
+
+
+
list(storage_root.rglob(f"{id}*"))
+
+
[Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799'),
+ Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799/N1454725799_1_CALIB.IMG')]
+
+
+
+
iss = ISS(pid)
+
+
Found 1 obsids.
+
+
+
+
iss.local_folder
+
+
Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799')
+
+
+
+
iss.raw_data_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.IMG')
+
+
+
+
iss.raw_tlmtab_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/tlmtab.fmt')
+
+
+
+
iss.download_calib()
+
+
File exists. Use `overwrite` to force re-download.
+
+
+
+
config.storage_root
+
+
Path('/Users/maye/planetarypy_data')
+
+
+
+
iss.dict.keys()
+
+
dict_keys(['coiss_raw', 'coiss_calib', 'coiss_thumb', 'coiss_medium', 'coiss_full', 'coiss_documentation', 'rms_index', 'inventory', 'planet_geometry', 'moon_geometry', 'ring_geometry', 'browse_thumb', 'browse_small', 'browse_medium', 'browse_full'])
+
+
+
+
iss.local_calib_path
+
+
Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799/N1454725799_1_CALIB.IMG')
+
+
+
+
iss.calib_data_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.IMG')
+
+
+
+
dm.calib_data_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.IMG')
+
+
+
+
iss.raw_data_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.IMG')
+
+
+
+
iss.volume
+
+
'COISS_2001'
+
+
+
+
iss.local_folder
+
+
Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799')
+
+
+
+
def get_raw_data_path(product_id):
+    iss = ISS(product_id)
+    return iss.local_data_path
+
+
+
id
+
+
'N1454725799'
+
+
+
+
list(storage_root.glob(f"**/{id}"))
+
+
[Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799')]
+
+
+
+
storage_root
+
+
Path('/Users/maye/planetarypy_data/missions/cassini/iss')
+
+
+
+
!ls {storage_root}
+
+
N1454725799/ N1874681996/ indexes/
+
+
+
+
get_raw_data_path(id)
+
+
Found 1 obsids.
+
+
+
Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799/N1454725799_1.IMG')
+
+
+
+
iss.dict
+
+
{'coiss_raw': ['https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.IMG',
+  'https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.LBL',
+  'https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/prefix2.fmt',
+  'https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/tlmtab.fmt'],
+ 'coiss_calib': ['https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.IMG',
+  'https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.LBL'],
+ 'coiss_thumb': ['https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/extras/thumbnail/1454725799_1455008789/N1454725799_1.IMG.jpeg_small'],
+ 'coiss_medium': ['https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/extras/browse/1454725799_1455008789/N1454725799_1.IMG.jpeg'],
+ 'coiss_full': ['https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/extras/full/1454725799_1455008789/N1454725799_1.IMG.png'],
+ 'coiss_documentation': ['https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/VICAR-File-Format.pdf',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/ISS-Users-Guide.pdf',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/ISS-Users-Guide.docx',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Data-Product-SIS.txt',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Data-Product-SIS.pdf',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Cassini-ISS-Final-Report.pdf',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Calibration-Theoretical-Basis.pdf',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Calibration-Plan.pdf',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/CISSCAL-Users-Guide.pdf',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Archive-SIS.txt',
+  'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Archive-SIS.pdf'],
+ 'rms_index': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_index.tab',
+  'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_index.lbl'],
+ 'inventory': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_inventory.csv',
+  'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_inventory.lbl'],
+ 'planet_geometry': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_saturn_summary.tab',
+  'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_saturn_summary.lbl'],
+ 'moon_geometry': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_moon_summary.tab',
+  'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_moon_summary.lbl'],
+ 'ring_geometry': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_ring_summary.tab',
+  'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_ring_summary.lbl'],
+ 'browse_thumb': ['https://opus.pds-rings.seti.org/holdings/previews/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_thumb.jpg'],
+ 'browse_small': ['https://opus.pds-rings.seti.org/holdings/previews/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_small.jpg'],
+ 'browse_medium': ['https://opus.pds-rings.seti.org/holdings/previews/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_med.jpg'],
+ 'browse_full': ['https://opus.pds-rings.seti.org/holdings/previews/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_full.png']}
+
+
+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/cassini_uvis.html b/api/cassini_uvis.html new file mode 100644 index 0000000..578bf78 --- /dev/null +++ b/api/cassini_uvis.html @@ -0,0 +1,1019 @@ + + + + + + + + + + +planetarypy - UVIS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

UVIS

+
+ +
+
+ Data management for Cassini UVIS. +
+
+ + +
+ + + + +
+ + +
+ + +
+
get_index("cassini.uvis", "index")
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FILE_NAMEOBSERVATION_TYPESTART_TIMESTOP_TIMETARGET_NAMEDATA_SET_IDSPACECRAFT_CLOCK_START_COUNTSPACECRAFT_CLOCK_STOP_COUNTINTEGRATION_DURATIONCOMPRESSION_TYPE...SUB_SOLAR_LONGITUDESUB_SPACECRAFT_LATITUDESUB_SPACECRAFT_LONGITUDEPHASE_ANGLEEMISSION_ANGLESOLAR_INCIDENCE_ANGLECENTRAL_BODY_DISTANCEDWELL_TIMEH_LEVELD_LEVEL
0/COUVIS_0001/DATA/D1999_007/EUV1999_007_17_05.LBLUSTARE1999-01-07 17:05:01.9491999-01-07 17:08:37.949<NA>CO-J-UVIS-2-SPEC-V1.21/1294420183.000UNK4.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
1/COUVIS_0001/DATA/D1999_007/EUV1999_007_17_08.LBLUSTARE1999-01-07 17:08:51.9471999-01-07 17:12:27.947<NA>CO-J-UVIS-2-SPEC-V1.21/1294420413.000UNK4.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
2/COUVIS_0001/DATA/D1999_007/FUV1999_007_16_57.LBLUSTARE1999-01-07 16:57:21.9521999-01-07 17:00:57.952<NA>CO-J-UVIS-2-SPEC-V1.21/1294419723.000UNK4.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
3/COUVIS_0001/DATA/D1999_007/FUV1999_007_17_01.LBLUSTARE1999-01-07 17:01:11.9501999-01-07 17:04:47.950<NA>CO-J-UVIS-2-SPEC-V1.21/1294419953.000UNK4.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
4/COUVIS_0001/DATA/D1999_007/HDAC1999_007_16_31...UHDAC1999-01-07 16:31:07.9621999-01-07 16:31:11.962<NA>CO-J-UVIS-2-SSB-V1.21/1294418149.000UNK-999.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.01(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
..................................................................
203240/COUVIS_0060/DATA/D2017_258/FUV2017_258_04_31.LBL<NA>2017-09-15 04:31:53.0052017-09-15 09:04:56.755SOLAR WINDCO-S-UVIS-2-CUBE-V1.41/1884145299.160UNK8191.875SQRT_9...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
203241/COUVIS_0060/DATA/D2017_258/FUV2017_258_07_00.LBL<NA>2017-09-15 07:00:27.6972017-09-15 07:13:40.447SOLAR WINDCO-S-UVIS-2-SPEC-V1.41/1884154214.096UNK2.625SQRT_9...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
203242/COUVIS_0060/DATA/D2017_258/FUV2017_258_07_15.LBL<NA>2017-09-15 07:15:04.4422017-09-15 10:31:51.692SOLAR WINDCO-S-UVIS-2-SPEC-V1.41/1884155091.032UNK2.625SQRT_9...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
203243/COUVIS_0060/DATA/D2017_258/HDAC2017_258_02_14...<NA>2017-09-15 02:14:02.4332017-09-15 02:14:06.433SOLAR WINDCO-S-UVIS-2-SSB-V1.41/1884137029.000UNK-999.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.01(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
203244/COUVIS_0060/DATA/D2017_258/HDAC2017_258_02_15...<NA>2017-09-15 02:15:25.0582017-09-15 02:17:33.058SOLAR WINDCO-S-UVIS-2-SSB-V1.41/1884137111.160UNK-999.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.032(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ +

203245 rows × 28 columns

+
+
+
+
+

source

+
+

DataManager

+
+
 DataManager (pid:str, skip_download:bool=False)
+
+

Initialize self. See help(type(self)) for accurate signature.

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
pidstrProduct ID. If longer than PDS_ID, will be cut in attribute pds_id
skip_downloadboolFalseskip trying to download
+
+
pid = "EUV2002_198_03_26_54_UVIS_C33ST_SPICARAST002_PRIME"
+
+
+
dm = DataManager(pid)
+
+
+
dm.raw_label_url
+
+
URL('https://opus.pds-rings.seti.org/holdings/volumes/COUVIS_0xxx/COUVIS_0004/DATA/D2002_198/EUV2002_198_03_26.LBL')
+
+
+
+
assert dm.pid == pid
+
+

PDS data is only stored under the first 17 characters of any UVIS-internal product id.

+
+
assert dm.pds_id == pid[:17]
+
+

The originally used product ID pid will be stored under original_pid.txt in the data folder:

+
+
dm.original_pid_file
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/original_pid.txt')
+
+
+

The OPUS result file will be stored as a TOML file:

+
+
dm.results_file
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/urls.toml')
+
+
+
+
dm.download(overwrite=False)
+
+
Local files exists. Use `overwrite=True` to download fresh.
+
+
+
+
dm.raw_data_path
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/EUV2002_198_03_26.DAT')
+
+
+
+
dm.calib_corr_path
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/EUV2002_198_03_26_CAL_3.DAT')
+
+
+
+

source

+
+
+

get_label_path

+
+
 get_label_path (pid)
+
+
+

source

+
+
+

get_data_path

+
+
 get_data_path (pid, skip_download=False)
+
+
+
get_data_path(pid)
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/EUV2002_198_03_26.DAT')
+
+
+
+
get_label_path(pid)
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/EUV2002_198_03_26.LBL')
+
+
+
+

source

+
+
+

get_user_guide

+
+
 get_user_guide ()
+
+
+
get_user_guide()
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/uvis_user_guide.pdf')
+
+
+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/config.html b/api/config.html new file mode 100644 index 0000000..c04d0ae --- /dev/null +++ b/api/config.html @@ -0,0 +1,845 @@ + + + + + + + + + + +planetarypy - Config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Config

+
+ +
+
+ This module manages configuration of the planetarypy package. +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

reset_non_urls

+
+
 reset_non_urls (source:dict, reset:str='')
+
+

Reset all non-URL values in the config file.

+

This is useful for copying the private config file with new data items back into the source tree for a clean commit.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
sourcedictsource dictionary
resetstrvalue to reset non URLs to
Returnsdict
+
+

source

+
+
+

Config

+
+
 Config (config_path:str=None)
+
+

Manage config stuff.

+

The key, value pairs found in the config file become attributes of the class instance after initialization. At minimum, there should be the storage_root attribute for storing data for this package.

+ + + + + + + + + + + + + + + + + +
TypeDefaultDetails
config_pathstrNonestr or pathlib.Path
+
+
+

The Config() object

+

The config module instantiates a config object from the Config class. Its attributes can be used to access several aspects relevant to the configuration of planetarypy. Using an object approach enables easy growth and nesting over time.

+
+
config = Config(config_path="test_config.toml")
+
+
+
assert config.storage_root == Path.home() / "planetarypy_data"
+
+
+

source

+
+

Config.get_value

+
+
 Config.get_value (key:str)
+
+

Get sub-dictionary by nested key.

+ +++++ + + + + + + + + + + + + + + + + + + + +
TypeDetails
keystrA nested key in dotted format, e.g. cassini.uvis.indexes
ReturnsstrReturning empty string if not existing, because Path(’’) is False which is handy (e.g. in ctx mod.)
+
+
config.list_indexes("mro.hirise")
+
+
['dtm', 'edr', 'rdr']
+
+
+
+
index = "missions.cassini.iss.indexes.moon_summary"
+
+
+
config.get_value(index)['url']
+
+
'https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl'
+
+
+
+

source

+
+
+

Config.set_value

+
+
 Config.set_value (nested_key:str, value:Union[float,str], save:bool=True)
+
+

Set value in sub-dic using dotted key.

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
nested_keystrA nested key in dotted format, e.g. cassini.uvis.ring_summary
valueUnionValue for the given key to be stored
saveboolTrueSwitch to control writing out to disk
+
+

source

+
+
+

Config.save

+
+
 Config.save ()
+
+

Write the TOML doc to file.

+
+
config.get_value(index)['url']
+
+
'https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl'
+
+
+
+
config.get_value("mro.ctx.datalevels")['edr']['url']
+
+
'https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx'
+
+
+
+

source

+
+
+

Config.ask_storage_root

+
+
 Config.ask_storage_root ()
+
+

Use input() to ask user for the storage_root path.

+

The path will be stored in the TOML-dict and saved into existing config file at Class.path, either default or as given during init. storage_root attribute is set as well.

+
+
config.missions
+
+
['cassini', 'mro', 'lro', 'go']
+
+
+
+
assert config.path.name == '.planetarypy_config.toml'
+
+
+
config.list_instruments("cassini")
+
+
['iss', 'uvis']
+
+
+
+
config.list_indexes("cassini.iss")
+
+
['index', 'inventory', 'moon_summary', 'ring_summary', 'saturn_summary']
+
+
+
+

source

+
+
+

Config.get_datalevels

+
+
 Config.get_datalevels (mission_instrument)
+
+

Return configured data levels available for an instrument.

+

This currently simply points to the indexes, assuming that everything that has an index is also its own datalevel. In case it ever is not, we can add more here.

+ + + + + + + + + + + + + +
Details
mission_instrumentmission.instrument code, e.g. mro.hirise
+
+
config.get_datalevels("mro.hirise")
+
+
['dtm', 'edr', 'rdr']
+
+
+
+
from nbdev import nbdev_export
+
+nbdev_export()
+
+ + +
+
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/ctx.html b/api/ctx.html new file mode 100644 index 0000000..79bdb3f --- /dev/null +++ b/api/ctx.html @@ -0,0 +1,3067 @@ + + + + + + + + + + +planetarypy - CTX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

CTX

+
+ +
+
+ Utils for working with MRO CTX data +
+
+ + +
+ + + + +
+ + +
+ + +
+
import pandas as pd
+
+pd.set_option("display.max_columns", 1000)
+
+
+

source

+
+

get_edr_index

+
+
 get_edr_index (refresh=False)
+
+
+
get_edr_index(False)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDFILE_SPECIFICATION_NAMEORIGINAL_PRODUCT_IDPRODUCT_IDIMAGE_TIMEINSTRUMENT_IDINSTRUMENT_MODE_IDLINE_SAMPLESLINESSPATIAL_SUMMINGSCALED_PIXEL_WIDTHPIXEL_ASPECT_RATIOEMISSION_ANGLEINCIDENCE_ANGLEPHASE_ANGLECENTER_LONGITUDECENTER_LATITUDEUPPER_LEFT_LONGITUDEUPPER_LEFT_LATITUDEUPPER_RIGHT_LONGITUDEUPPER_RIGHT_LATITUDELOWER_LEFT_LONGITUDELOWER_LEFT_LATITUDELOWER_RIGHT_LONGITUDELOWER_RIGHT_LATITUDEMISSION_PHASE_NAMETARGET_NAMESPACECRAFT_CLOCK_START_COUNTFOCAL_PLANE_TEMPERATURELINE_EXPOSURE_DURATIONOFFSET_MODE_IDSAMPLE_FIRST_PIXELSCALED_IMAGE_WIDTHSCALED_IMAGE_HEIGHTSPACECRAFT_ALTITUDETARGET_CENTER_DISTANCESLANT_DISTANCEUSAGE_NOTENORTH_AZIMUTHSUB_SOLAR_AZIMUTHSUB_SOLAR_LONGITUDESUB_SOLAR_LATITUDESUB_SPACECRAFT_LONGITUDESUB_SPACECRAFT_LATITUDESOLAR_DISTANCESOLAR_LONGITUDELOCAL_TIMEIMAGE_SKEW_ANGLERATIONALE_DESCDATA_QUALITY_DESCORBIT_NUMBERshort_pidmonth_col
0MROX_0001DATA/CRU_000001_9999_XN_99N999W.IMG4A_04_0001000400CRU_000001_9999_XN_99N999W2005-08-30 15:40:21.549CTXNIFL5056102410.00.0999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9CRUISESPACE0809883639:076283.310.0194/53/5300.00.00.00.00.0N0.00.00.00.00.00.00.0278.8910.160.0Instrument checkout image of spaceOK-4242CRU_000001_9999CRU
1MROX_0001DATA/CRU_000002_9999_XN_99N999W.IMG4A_04_0001000500CRU_000002_9999_XN_99N999W2005-09-08 15:59:45.313CTXNIFL50561536010.00.0999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9CRUISEMOON0810662403:012296.05.71196/243/23800.00.00.00.00.0N0.00.00.00.00.00.00.0284.484.60.0Calibration image of the MoonOK-4126CRU_000002_9999CRU
2MROX_0001DATA/CRU_000003_9999_XN_99N999W.IMG4A_04_0001000600CRU_000003_9999_XN_99N999W2005-09-08 16:03:37.927CTXNIFL5056204810.00.0999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9CRUISESTAR0810662635:169296.622.9196/243/23800.00.00.00.00.0N0.00.00.00.00.00.00.0284.484.660.0Calibration image of Omega Centauri (globular ...OK-4126CRU_000003_9999CRU
3MROX_0001DATA/CRU_000004_9999_XN_99N999W.IMG4A_04_0001000700CRU_000004_9999_XN_99N999W2005-09-08 16:08:23.841CTXNIFL5056204810.00.0999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9CRUISESTAR0810662921:147296.822.9196/243/23800.00.00.00.00.0N0.00.00.00.00.00.00.0284.484.740.0Calibration image of Omega Centauri (globular ...OK-4126CRU_000004_9999CRU
4MROX_0001DATA/CRU_000005_9999_XN_99N999W.IMG4A_04_0001000800CRU_000005_9999_XN_99N999W2005-09-08 16:11:18.649CTXNIFL50562150410.00.0999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9999.9CRUISEMOON0810663096:098297.15.71196/243/23800.00.00.00.00.0N0.00.00.00.00.00.00.0284.484.790.0Calibration image of the MoonOK-4126CRU_000005_9999CRU
..................................................................................................................................................................
142363MROX_4656DATA/U17_077781_1107_XI_69S045W.IMG4A_04_118B04B300U17_077781_1107_XI_69S045W2023-03-01 00:01:37.834CTXITL5056716815.061.194.9689.486.1745.21-69.4245.64-69.8244.42-69.7445.97-69.144.79-69.02ESPMARS1362096156:230294.01.877197/202/197025.3643.16252.63631.28253.48N279.93230.3796.4912.7446.17-69.47243271024.830.815.4290.1Southern autumn frost streak area in Viking 2 ...OK77781U17_077781_1107U17
142364MROX_4656DATA/U17_077781_1560_XN_24S055W.IMG4A_04_118A04B400U17_077781_1560_XN_24S055W2023-03-01 00:15:17.076CTXNIFL50563072015.131.190.0956.8456.7855.44-24.0855.48-25.6755.0-25.6255.88-22.5555.41-22.5ESPMARS1362096976:036293.91.877197/202/197025.68186.57256.543649.44256.54N276.89222.2899.912.7455.44-24.08243270437.830.8114.9690.2Ride-along with HiRISEOK77781U17_077781_1560U17
142365MROX_4656DATA/U17_077781_1683_XN_11S057W.IMG4A_04_118A04B500U17_077781_1683_XN_11S057W2023-03-01 00:19:04.486CTXNIFL50563174415.221.160.0949.8249.7657.0-11.7157.03-13.3556.58-13.2957.42-10.1256.98-10.06ESPMARS1362097203:141293.81.877197/202/197026.13192.71260.843656.22260.84N277.01214.98100.8312.7457.0-11.7243270441.730.8114.9190.2Terrain north of Coprates ChasmaOK77781U17_077781_1683U17
142366MROX_4656DATA/U17_077781_2027_XI_22N061W.IMG4A_04_118B04B600U17_077781_2027_XI_22N061W2023-03-01 00:29:24.818CTXITL50565222415.651.063.541.5638.0660.9622.860.8820.1560.3820.2161.5625.461.0425.45ESPMARS1362097823:226293.81.877197/202/197028.27312.92281.463674.69281.94N276.85180.29103.4212.7461.2522.78243271031.730.8114.8289.8Kasei Valles regionOK77781U17_077781_2027U17
142367MROX_4656DATA/U17_077781_2440_XN_64N067W.IMG4A_04_118A04B700U17_077781_2440_XN_64N067W2023-03-01 00:43:08.662CTXNIFL5056716816.220.945.4158.153.8867.7464.0768.2363.6867.0563.7568.4464.3867.2364.45ESPMARS1362098647:186293.81.877197/202/197031.1541.8309.793689.87311.07N277.1143.31106.5912.7468.7664.02243272920.630.8214.5989.9Ride-along with HiRISEOK77781U17_077781_2440U17
+ +

142368 rows × 53 columns

+
+
+
+
+

source

+
+
+

CTXEDR

+
+
 CTXEDR (pid:str, root:str='', with_volume=None, with_pid_folder=None,
+         refresh_index=False)
+
+

Manage access to EDR data

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
pidstrCTX product id (pid)
rootstralternative root folder for EDR data
with_volumeNoneTypeNonedoes the storage path include the volume folder
with_pid_folderNoneTypeNonecontrol if stuff is stored inside PID folders
refresh_indexboolFalse
+

PRODUCT_IDs can be provided in the shortened form (still unique), which are the first 15 characters of the full PRODUCT_ID:

+
+
pid = "F10_039666_1383"
+pid = "B01_009958_1524_XI_27S347W"
+
+
+
edr = CTXEDR(pid)
+
+
+

source

+
+
+

CTXEDR.pid

+
+
 CTXEDR.pid ()
+
+

Return product_id

+
+
edr.pid
+
+
'B01_009958_1524_XI_27S347W'
+
+
+
+
edr.short_pid
+
+
'B01_009958_1524'
+
+
+

These are the storage configuration settings:

+
+
edr.root
+
+
Path('/home/maye/big_drive/planetary_data/missions/mro/ctx/edr')
+
+
+
+
edr.with_pid_folder
+
+
True
+
+
+
+
edr.with_volume
+
+
True
+
+
+
+

source

+
+
+

CTXEDR.source_folder

+
+
 CTXEDR.source_folder ()
+
+

Calculate the source folder based on storage options with_pid_folder and with_volume.

+
+
edr.source_folder
+
+
Path('/home/maye/big_drive/planetary_data/missions/mro/ctx/edr/mrox_0684/B01_009958_1524_XI_27S347W')
+
+
+
+

source

+
+
+

CTXEDR.source_path

+
+
 CTXEDR.source_path ()
+
+

Combine source_folder with pid into full path.

+
+
edr.source_path
+
+
Path('/home/maye/big_drive/planetary_data/missions/mro/ctx/edr/mrox_0684/B01_009958_1524_XI_27S347W/B01_009958_1524_XI_27S347W.IMG')
+
+
+
+
edr.source_path.exists()
+
+
False
+
+
+
+

source

+
+
+

CTXEDR.meta

+
+
 CTXEDR.meta ()
+
+

get the metadata from the index table

+
+
edr.meta
+
+
volume_id                                                    MROX_0684
+file_specification_name            DATA/B01_009958_1524_XI_27S347W.IMG
+original_product_id                                   4A_04_103100F800
+product_id                                  B01_009958_1524_XI_27S347W
+image_time                                  2008-09-10 10:15:05.533000
+instrument_id                                                      CTX
+instrument_mode_id                                                 ITL
+line_samples                                                      5056
+lines                                                            18432
+spatial_summing                                                      1
+scaled_pixel_width                                                5.13
+pixel_aspect_ratio                                                1.18
+emission_angle                                                    1.08
+incidence_angle                                                  71.46
+phase_angle                                                      70.61
+center_longitude                                                347.59
+center_latitude                                                 -27.64
+upper_left_longitude                                            347.71
+upper_left_latitude                                              -28.6
+upper_right_longitude                                           347.22
+upper_right_latitude                                            -28.55
+lower_left_longitude                                            347.96
+lower_left_latitude                                             -26.73
+lower_right_longitude                                           347.47
+lower_right_latitude                                            -26.68
+mission_phase_name                                                 PSP
+target_name                                                       MARS
+spacecraft_clock_start_count                            0905508925:217
+focal_plane_temperature                                          292.8
+line_exposure_duration                                           1.877
+offset_mode_id                                             196/190/181
+sample_first_pixel                                                   0
+scaled_image_width                                               25.69
+scaled_image_height                                             111.85
+spacecraft_altitude                                             256.72
+target_center_distance                                         3648.65
+slant_distance                                                  256.76
+usage_note                                                           N
+north_azimuth                                                   276.86
+sub_solar_azimuth                                                223.2
+sub_solar_longitude                                              42.32
+sub_solar_latitude                                               20.59
+sub_spacecraft_longitude                                        347.68
+sub_spacecraft_latitude                                         -27.64
+solar_distance                                             239051686.0
+solar_longitude                                                 125.14
+local_time                                                       15.66
+image_skew_angle                                                  90.2
+rationale_desc                  Valley trace in northern Noachis Terra
+data_quality_desc                                                   OK
+orbit_number                                                      9958
+short_pid                                              B01_009958_1524
+month_col                                                          B01
+Name: 16153, dtype: object
+
+
+
+

source

+
+
+

CTXEDR.url

+
+
 CTXEDR.url ()
+
+

Calculate URL from input dataframe row.

+
+

source

+
+
+

CTXEDR.download

+
+
 CTXEDR.download (overwrite=False)
+
+

Download and store correctly the EDR data, if not locally available.

+ + + + + + + + + + + + + + + + + +
TypeDefaultDetails
overwriteboolFalseuse overwrite to download in all cases.
+
+
edr.download()
+
+ +
+
+
+
edr.source_path
+
+
Path('/home/maye/big_drive/planetary_data/missions/mro/ctx/edr/mrox_0684/B01_009958_1524_XI_27S347W.IMG')
+
+
+
+

source

+
+
+

CTXEDR.__str__

+
+
 CTXEDR.__str__ ()
+
+

Show some info about yourself when returned in a REPL (like ipython/jupyter).

+
+
Path(config.get_value("mro.ctx.preproc_root"))
+
+
Path('/remote/trove/geo/planet/Mars/CTX/special/cal_noflat')
+
+
+
+

source

+
+
+

CTX

+
+
 CTX (id_:str, source_dir:str='', proc_root:str='', with_volume=None,
+      with_pid_folder=None, use_preproc=False)
+
+

Class to manage dealing with CTX data.

+

HAS a CTXEDR attribute as defined above. Attributes from CTXEDR are availalbe via getattr()

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
id_strCTX product id
source_dirstrwhere the raw EDR data is stored, if not coming from plpy
proc_rootstrwhere to store processed, if not plpy
with_volumeNoneTypeNonestore with extra volume subfolder?
with_pid_folderNoneTypeNonestore with extra product_id subfolder?
use_preprocboolFalseuse preproc for cal_da
+
+
pid = "N05_064260_1638_XI_16S351W"
+
+
+
ctx = CTX(pid)
+
+
+
ctx.save_as_tif()
+
+
File exists. Use `refresh=True` to force recreation.
+
+
+
+
str(ctx.map_path)
+
+
'/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/edr/mrox_3629/N05_064260_1638_XI_16S351W/N05_064260_1638_XI_16S351W.lev2.cub'
+
+
+
+
ctx.proc_folder / ctx.map_name.with_suffix(".tif")
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/edr/mrox_3629/N05_064260_1638_XI_16S351W/N05_064260_1638_XI_16S351W.lev2.tif')
+
+
+
+
ctx.cal_da
+
+ +
+ + + + + + + + + + + + + + +
<xarray.DataArray 'N05_064260_1638 calibrated' (y: 15360, x: 5000)>
+[76800000 values with dtype=float32]
+Coordinates:
+  * x        (x) float64 0.5 1.5 2.5 3.5 ... 4.996e+03 4.998e+03 4.998e+03 5e+03
+  * y        (y) float64 0.5 1.5 2.5 3.5 ... 1.536e+04 1.536e+04 1.536e+04
+Attributes:
+    BANDWIDTH:        0.15
+    BANDWIDTH_UNIT:   micrometers
+    WAVELENGTH:       0.65
+    WAVELENGTH_UNIT:  micrometers
+    scale_factor:     1.0
+    add_offset:       0.0
+    long_name:        BroadBand
+
+
+
+
ctx.preproc_cal_path
+
+
Path('/remote/trove/geo/planet/Mars/CTX/special/cal_noflat/mrox_3629/N05_064260_1638_XI_16S351W.ctxcal.cub')
+
+
+

Based on storage options with_pid_folder and with_volume, we calculate the proc_folder for self-processed data:

+
+

source

+
+
+

CTX.proc_folder

+
+
 CTX.proc_folder ()
+
+

the folder for foreign processed data, like pre-processed calibrated data, e.g.

+
+
ctx.proc_folder
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/edr/mrox_3629/N05_064260_1638_XI_16S351W')
+
+
+

These can be changed at object creation:

+
+
CTX(pid, with_volume=True, with_pid_folder=True).source_folder
+
+
Path('/remote/trove/geo/planet/Mars/CTX/pds/mrox_3629')
+
+
+
+

source

+
+
+

CTX.cal_path

+
+
 CTX.cal_path ()
+
+

Path to calibrated cube file. Also destriped files get this name.

+
+
ctx.cal_path
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/edr/mrox_3629/N05_064260_1638_XI_16S351W/N05_064260_1638_XI_16S351W.cal.cub')
+
+
+
+

source

+
+
+

CTX.calib_pipeline

+
+
 CTX.calib_pipeline (overwrite=False)
+
+

Execute the whole ISIS pipeline for CTX EDR data.

+
+
ctx.proc_folder
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/edr/mrox_3629/N05_064260_1638_XI_16S351W')
+
+
+
+
ctx.isis_import()
+
+
+
ctx.spice_init(web="yes")
+
+
+
ctx.calibrate()
+
+
+
ctx.destripe()
+
+
+
# not executing always, as it takes lot of time
+# ctx.map_project()
+
+
+
ctx.map_path
+
+
+
ctx.calib_pipeline()
+
+
+

source

+
+
+

CTX.plot_edr

+
+
 CTX.plot_edr ()
+
+

Plot EDR xarray using hvplot.

+
+
ctx.plot_edr()
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+Note +
+
+
+

Note the different shape of EDR data and calibrated data. A few SAMPLES are being used for calibration.

+
+
+
+
ctx.edr_shape
+
+
(15360, 5056)
+
+
+
+
ctx.cal_shape
+
+
(15360, 5000)
+
+
+
+
ctx.plot_calibrated()
+
+ +
+
+
+
+
+ +
+
+
+

source

+
+
+

CTXCollection

+
+
 CTXCollection (product_ids, full_width=False, filter_error=False,
+                edrindex=None)
+
+

Class with several helpful methods to work with a set of CTX images.

+

We identify the images via a list of product_ids. Several methods manipulate this list based on the requested constraint.

+

The CTXCollection class offers a few class methods for a wider range of finding CTX product_ids from the index file:

+
+

source

+
+
+

CTXCollection.by_volume

+
+
 CTXCollection.by_volume (vol_id, **kwargs)
+
+

Create a CTXCollection from the PDS volume number.

+
+
CTXCollection.by_volume(4114).n_items
+
+
30
+
+
+
+
CTXCollection.by_volume(4114, full_width=True).n_items
+
+
19
+
+
+
+
CTXCollection.by_volume(4114, full_width=True, filter_error=True).n_items
+
+
14
+
+
+
+
CTXCollection.by_volume(4114, full_width=False, filter_error=True).n_items
+
+
23
+
+
+
+

source

+
+
+

CTXCollection.by_month

+
+
 CTXCollection.by_month (month_letters, nth_volume=None, **kwargs)
+
+

Create a CTXCollection based on the first 3 letters of the product_id (a.k.a. “month”)

+
+
CTXCollection.by_month("J18", filter_error=True, full_width=True).n_items
+
+
287
+
+
+
+

source

+
+
+

CTXCollection.volume_from_pid

+
+
 CTXCollection.volume_from_pid (pid, **kwargs)
+
+

Get a CTXCollection of the volume for a given image (product_id).

+

We define an example list of product_ids:

+
+
ids = get_edr_index().sample(3, random_state=41).PRODUCT_ID
+ids
+
+
41779    G16_024548_2195_XI_39N161W
+33475    G02_018931_1907_XI_10N166W
+45075    G20_026104_2617_XN_81N181W
+Name: PRODUCT_ID, dtype: string
+
+
+
+
CTXCollection.volume_from_pid(ids.values[0]).n_items  # getting the whole volume here
+
+
56
+
+
+
+
coll = CTXCollection(ids)
+
+
+
coll.edr_exist_check()
+
+
[('G02_018931_1907_XI_10N166W', True),
+ ('G16_024548_2195_XI_39N161W', True),
+ ('G20_026104_2617_XN_81N181W', True)]
+
+
+
+
coll.get_urls()
+
+
[URL('https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_1200/data/G02_018931_1907_XI_10N166W.IMG'),
+ URL('https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_1422/data/G16_024548_2195_XI_39N161W.IMG'),
+ URL('https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_1532/data/G20_026104_2617_XN_81N181W.IMG')]
+
+
+

The next command launches a parallel download:

+
+
coll.download_collection(overwrite=False)
+
+
Downloading collection...
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+
+
+ +
+
+

This is performing the ISIS import and calibration in parallel:

+
+
coll.calibrate_collection()
+
+
+
coll.calib_exist_check()
+
+
[('G02_018931_1907_XI_10N166W', False),
+ ('G16_024548_2195_XI_39N161W', False),
+ ('G20_026104_2617_XN_81N181W', False)]
+
+
+
+
coll = CTXCollection.by_volume(4114)
+
+
+
coll.product_ids
+
+
<StringArray>
+['N20_069979_1676_XI_12S177W', 'N20_069980_1676_XI_12S205W',
+ 'N20_069981_1919_XI_11N234W', 'N20_069982_1380_XI_42S255W',
+ 'N20_069982_1820_XI_02N261W', 'N20_069982_2287_XN_48N269W',
+ 'N20_069983_1442_XI_35S283W', 'N20_069984_1686_XI_11S313W',
+ 'N20_069984_2097_XI_29N319W', 'N20_069985_2064_XI_26N345W',
+ 'N20_069986_2025_XI_22N012W', 'N20_069987_2243_XN_44N042W',
+ 'N20_069991_1451_XI_34S142W', 'N20_069991_1940_XI_14N149W',
+ 'N20_069992_1761_XI_03S173W', 'N20_069993_1724_XI_07S200W',
+ 'N20_069994_1753_XI_04S227W', 'N20_069995_1633_XI_16S254W',
+ 'N20_069995_2028_XI_22N258W', 'N20_069996_2085_XN_28N285W',
+ 'N20_069997_1479_XI_32S306W', 'N20_069999_1558_XI_24S003W',
+ 'N20_070004_1931_XI_13N144W', 'N20_070006_1430_XI_37S191W',
+ 'N20_070007_1793_XI_00S223W', 'N20_070009_2018_XN_21N282W',
+ 'N20_070010_1466_XI_33S301W', 'N20_070011_1507_XI_29S328W',
+ 'N20_070011_2252_XI_45N338W', 'N20_070012_1824_XN_02N001W']
+Length: 30, dtype: string
+
+
+
+

source

+
+
+

CTXCollection.get_corrupted

+
+
 CTXCollection.get_corrupted ()
+
+

Return the product_ids where the PDS index file has an ‘ERROR’ flag for the DATA_QUALITY_DESC field.

+
+
coll.get_corrupted()
+
+
['N20_069991_1451_XI_34S142W',
+ 'N20_069992_1761_XI_03S173W',
+ 'N20_069993_1724_XI_07S200W',
+ 'N20_069994_1753_XI_04S227W',
+ 'N20_069997_1479_XI_32S306W',
+ 'N20_070010_1466_XI_33S301W',
+ 'N20_070012_1824_XN_02N001W']
+
+
+
+

source

+
+
+

CTXCollection.n_items

+
+
 CTXCollection.n_items ()
+
+

Return length of product_ids list.

+
+
coll.n_items
+
+
30
+
+
+
+

source

+
+
+

CTXCollection.sample

+
+
 CTXCollection.sample (n)
+
+

Return random sample of product_ids, size n.

+
+
coll.sample(4)
+
+
['N20_070006_1430_XI_37S191W',
+ 'N20_069999_1558_XI_24S003W',
+ 'N20_069986_2025_XI_22N012W',
+ 'N20_069983_1442_XI_35S283W']
+
+
+
+

source

+
+
+

CTXCollection.meta

+
+
 CTXCollection.meta ()
+
+

Return the index file filtered for the given product_ids.

+
+
coll.meta.head()
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDFILE_SPECIFICATION_NAMEORIGINAL_PRODUCT_IDPRODUCT_IDIMAGE_TIMEINSTRUMENT_IDINSTRUMENT_MODE_IDLINE_SAMPLESLINESSPATIAL_SUMMINGSCALED_PIXEL_WIDTHPIXEL_ASPECT_RATIOEMISSION_ANGLEINCIDENCE_ANGLEPHASE_ANGLECENTER_LONGITUDECENTER_LATITUDEUPPER_LEFT_LONGITUDEUPPER_LEFT_LATITUDEUPPER_RIGHT_LONGITUDEUPPER_RIGHT_LATITUDELOWER_LEFT_LONGITUDELOWER_LEFT_LATITUDELOWER_RIGHT_LONGITUDELOWER_RIGHT_LATITUDEMISSION_PHASE_NAMETARGET_NAMESPACECRAFT_CLOCK_START_COUNTFOCAL_PLANE_TEMPERATURELINE_EXPOSURE_DURATIONOFFSET_MODE_IDSAMPLE_FIRST_PIXELSCALED_IMAGE_WIDTHSCALED_IMAGE_HEIGHTSPACECRAFT_ALTITUDETARGET_CENTER_DISTANCESLANT_DISTANCEUSAGE_NOTENORTH_AZIMUTHSUB_SOLAR_AZIMUTHSUB_SOLAR_LONGITUDESUB_SOLAR_LATITUDESUB_SPACECRAFT_LONGITUDESUB_SPACECRAFT_LATITUDESOLAR_DISTANCESOLAR_LONGITUDELOCAL_TIMEIMAGE_SKEW_ANGLERATIONALE_DESCDATA_QUALITY_DESCORBIT_NUMBERshort_pidmonth_col
127546MROX_4114DATA/N20_069979_1676_XI_12S177W.IMG4A_04_1165000100N20_069979_1676_XI_12S177W2021-07-01 02:22:53.651CTXITL50564300815.31.145.365.1861.08177.4-12.53177.37-14.74176.91-14.69177.89-10.37177.43-10.32ESPMARS1309573428:228291.31.877196/188/183026.53260.74262.713657.97263.76N276.79219.82233.323.12177.78-12.56249116269.665.9715.7290.2Northern Terra SirenumOK69979N20_069979_1676N20
127547MROX_4114DATA/N20_069980_1676_XI_12S205W.IMG4A_04_1165000200N20_069980_1676_XI_12S205W2021-07-01 04:15:32.600CTXITL50561843215.261.152.4864.9963.03204.93-12.5205.04-13.46204.59-13.41205.26-11.59204.81-11.53ESPMARS1309580187:215290.91.877196/188/183026.34111.73262.543657.8262.77N276.75219.87260.6223.13205.11-12.51249117636.266.015.7190.1Valleys in Terra CimmeriaOK69980N20_069980_1676N20
127548MROX_4114DATA/N20_069981_1919_XI_11N234W.IMG4A_04_1165000300N20_069981_1919_XI_11N234W2021-07-01 06:14:46.674CTXITL50565222415.621.078.1353.4346.2234.6411.91234.589.25234.19.3235.214.52234.7114.57ESPMARS1309587341:234291.11.877196/188/183028.12314.36275.313670.67277.89N276.65206.74289.7623.14235.2711.85249118514.066.0415.6690.0Nepenthes Planum regionOK69981N20_069981_1919N20
127549MROX_4114DATA/N20_069982_1380_XI_42S255W.IMG4A_04_1165000400N20_069982_1380_XI_42S255W2021-07-01 07:50:56.614CTXITL25287168210.251.194.8783.9880.5255.35-42.07255.52-42.83254.94-42.77255.75-41.37255.18-41.32ESPMARS1309593111:219291.21.884196/188/183025.6587.09254.993642.26255.85N276.84225.48313.0223.14255.8-42.1249121323.666.0715.8490.1Apron in the Hellas Montes regionOK69982N20_069982_1380N20
127550MROX_4114DATA/N20_069982_1820_XI_02N261W.IMG4A_04_1165000500N20_069982_1820_XI_02N261W2021-07-01 08:03:55.615CTXITL50565222415.421.115.1157.4753.17261.022.02260.94-0.66260.49-0.6261.574.63261.114.69ESPMARS1309593890:219291.01.877196/188/183027.13315.79268.723664.89269.71N276.84213.19316.3323.14261.41.98249120029.266.0715.6790.1Tyrrhena TerraOK69982N20_069982_1820N20
+ +
+
+
+
+

source

+
+
+

CTXCollection.image_times

+
+
 CTXCollection.image_times ()
+
+

Return the image observation times.

+
+
coll.image_times
+
+
127546   2021-07-01 02:22:53.651
+127547   2021-07-01 04:15:32.600
+127548   2021-07-01 06:14:46.674
+127549   2021-07-01 07:50:56.614
+127550   2021-07-01 08:03:55.615
+127551   2021-07-01 08:19:18.963
+127552   2021-07-01 09:44:54.631
+127553   2021-07-01 11:44:29.607
+127554   2021-07-01 11:57:15.646
+127555   2021-07-01 13:48:19.595
+127556   2021-07-01 15:39:04.638
+127557   2021-07-01 17:38:53.212
+127558   2021-07-02 00:42:16.641
+127559   2021-07-02 00:57:36.688
+127560   2021-07-02 02:44:15.621
+127561   2021-07-02 04:35:30.668
+127562   2021-07-02 06:28:38.621
+127563   2021-07-02 08:16:50.660
+127564   2021-07-02 08:29:27.601
+127565   2021-07-02 10:23:41.558
+127566   2021-07-02 11:56:54.648
+127567   2021-07-02 15:43:37.659
+127568   2021-07-03 01:16:03.651
+127569   2021-07-03 04:45:28.607
+127570   2021-07-03 06:48:35.596
+127571   2021-07-03 10:40:22.119
+127572   2021-07-03 12:14:51.615
+127573   2021-07-03 14:08:48.673
+127574   2021-07-03 14:31:39.582
+127575   2021-07-03 16:10:56.454
+Name: IMAGE_TIME, dtype: datetime64[ns]
+
+
+

Also cool: pandas can do time-average:

+
+
coll.image_times.mean()
+
+
Timestamp('2021-07-02 05:45:11.936933376')
+
+
+
+

source

+
+
+

CTXCollection.get_ctx_n

+
+
 CTXCollection.get_ctx_n (n)
+
+

Get CTX object for n-th product_id

+
+
coll.get_ctx_n(2)
+
+
PRODUCT_ID: N20_069981_1919_XI_11N234W
+URL: https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_4114/data/N20_069981_1919_XI_11N234W.IMG
+source_path: /remote/trove/geo/planet/Mars/CTX/pds/mrox_4114/N20_069981_1919_XI_11N234W.IMG
+Shape: (52224, 5056)
+
+
+
+

source

+
+
+

CTXCollection.get_pid_n

+
+
 CTXCollection.get_pid_n (n)
+
+

Get pid for n-th entry in product_ids.

+
+
coll.get_pid_n(2)
+
+
'N20_069981_1919_XI_11N234W'
+
+
+
+
coll = CTXCollection.by_month("N21")
+
+
+
len(coll.product_ids)
+
+
342
+
+
+
+
coll
+
+
# of product IDs: 342
+Volumes contained in list of product_ids:
+<StringArray>
+['MROX_4126', 'MROX_4127', 'MROX_4128', 'MROX_4129', 'MROX_4130', 'MROX_4131',
+ 'MROX_4132', 'MROX_4133']
+Length: 8, dtype: string
+
+
+
+
+

Command line interfaces

+
+

source

+
+

ctx_calib

+
+
 ctx_calib (pid:str, source:str='', proc_root:str='',
+            overwrite:bool=False)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
pidstrCTX product_id
sourcestrpath to where EDRs are stored if not from plpy
proc_rootstrpath to where processed data is to be stored
overwriteboolFalseoverwrite processed data
+
+
ctx_calib(pid, overwrite=True)
+
+
+
from nbdev import nbdev_export
+
+nbdev_export()
+
+ + +
+
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/api/diviner.html b/api/diviner.html new file mode 100644 index 0000000..8439204 --- /dev/null +++ b/api/diviner.html @@ -0,0 +1,670 @@ + + + + + + + + + + +planetarypy - Diviner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Diviner

+
+ +
+
+ Tools to work with Diviner PDS data +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

DataManager

+
+
 DataManager (tstr)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
dm = DataManager("2010010110")
+
+
+
dm.local_path
+
+
+

source

+
+
+

read_l1a_data

+
+
 read_l1a_data (fname, nrows=None)
+
+
+

source

+
+
+

L1AHeader

+
+
 L1AHeader ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+

source

+
+
+

parse_header_line

+
+
 parse_header_line (line)
+
+

Parse header lines.

+
+
+
+

s = ’ a b c ’ parse_header_line(s) [‘a’, ‘b’, ‘c’] s = ’ a, b , c ’ parse_header_line(s) [‘a’, ‘b’, ‘c’]

+
+
+
+
+
dm = DataManager("2010010110")
+
+
+
dm.download()
+
+
+
dm.volume
+
+
+
dm.url
+
+
+
df = pd.read_csv(
+    dm.local_path,
+    comment="#",
+    # names=L1AHeader.columns,
+    na_values="-9999",
+    skipinitialspace=True,
+)
+df.head()
+
+
+
pd.set_option("display.max_columns", 200)
+
+
+
df.index
+
+
+
dm.local_path
+
+
+

source

+
+
+

get_data_path

+
+
 get_data_path (tstr)
+
+
+
get_data_path("2017010110")
+
+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/exceptions.html b/api/exceptions.html new file mode 100644 index 0000000..7c20b02 --- /dev/null +++ b/api/exceptions.html @@ -0,0 +1,622 @@ + + + + + + + + + + +planetarypy - Package exceptions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Package exceptions

+
+ +
+
+ Specialized exceptions that provide better feed-back +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

MissingParameterError

+
+
 MissingParameterError (txt)
+
+

Base class for exceptions in this module.

+
+

source

+
+
+

SpiceError

+
+
 SpiceError (function)
+
+

Base class for exceptions in this module.

+
+

source

+
+
+

ObserverNotSetError

+

Base class for exceptions in this module.

+
+

source

+
+
+

SPointNotSetError

+

Base class for exceptions in this module.

+
+

source

+
+
+

SpicerError

+

Base class for exceptions in this module.

+
+

source

+
+
+

GeoTransformNotSetError

+
+
 GeoTransformNotSetError (where, what)
+
+

Exception raised for errors in the input of transformations.

+

Attributes: where – where is something missing what – what is missing

+
+

source

+
+
+

ProjectionNotSetError

+
+
 ProjectionNotSetError (where, what)
+
+

Exception raised for errors in the input of transformations.

+

Attributes: where – where is something missing what – what is missing

+
+

source

+
+
+

SomethingNotSetError

+
+
 SomethingNotSetError (where, what)
+
+

Exception raised for errors in the input of transformations.

+

Attributes: where – where is something missing what – what is missing

+
+

source

+
+
+

Error

+

Base class for exceptions in this module.

+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/geotools.html b/api/geotools.html new file mode 100644 index 0000000..31d8385 --- /dev/null +++ b/api/geotools.html @@ -0,0 +1,914 @@ + + + + + + + + + + +planetarypy - Geotools + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Geotools

+
+ +
+
+ Utilities to work with geo-referenced (image) data. (GDAL required) +
+
+ + +
+ + + + +
+ + +
+ + +
+

Abbreviations

+
    +
  • ul = Upper Left
  • +
  • lr = LowerRight
  • +
+
+

source

+
+

pixel_to_meter

+
+
 pixel_to_meter (sample, line, geotransform, shift=False)
+
+

provide point in map projection coordinates.

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
sample
line
geotransform
shiftboolFalse
Returnstuple (x,y) coordinates in the projection of the dataset
+
+

source

+
+
+

shift_to_center

+
+
 shift_to_center (x, y, geotransform)
+
+
+

source

+
+
+

debug_srs

+
+
 debug_srs (projection)
+
+

Correct wrong scale_factor in PolarStereographic data.

+

Some PolarStereographic data have a 0 as a scale_factor in the projection (mostly MOLA), which is being corrected here. TODO: Check for being PolarStereographic before doing this!

+
+

source

+
+
+

get_sun_angles

+
+
 get_sun_angles (spicer, img)
+
+

Calculate solar azimuth and incidence.

+

By requiring a spicer object for this function, it becomes independent from the solar system object where the calculations are made.

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDetails
spicerspicer.Spicerneeds to be setup for time, but spoint is set from img.center in here.
imggeotools.ImgDataThe image data of which the center point serves as the start point.
Returnstuple(float, float)Solar azimuth, incidence [degrees]
+
+

source

+
+
+

calculate_image_north_azimuth

+
+
 calculate_image_north_azimuth (img, zero='right')
+
+
+

source

+
+
+

get_north_shifted_point

+
+
 get_north_shifted_point (img, offset=0.001)
+
+

Increasing the latitude is a sure way of getting north.

+
+

source

+
+
+

calculate_image_azimuth

+
+
 calculate_image_azimuth (origPoint, newPoint, zero='right')
+
+

Calculate azimuth angle between 2 image points.

+

Beware that this function calculates trigonometric angles. If the points are from an image that has (0, 0) in the upper left, this means that the angles increase clockwise. That is why, for example, for an HiRISE image, the return of this function matches the angle rotation definition for HiRISE data.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
origPoint
newPoint
zerostrright
Returnsazimuth: Azimuth angle
+
/home/runner/micromamba/envs/my-env/lib/python3.11/site-packages/fastcore/docscrape.py:225: UserWarning: Unknown section Requires
+  else: warn(msg)
+
+

source

+
+
+

Point

+
+
 Point (sample=None, line=None, x=None, y=None, lon=None, lat=None,
+        geotrans=None, proj=None)
+
+

Point class to manage pixel and map points and their transformations.

+
+

source

+
+
+

Window

+
+
 Window (ulPoint=None, lrPoint=None, centerPoint=None, width=None)
+
+

class to manage a window made of corner Points (objects of Point())

+

when using width, only quadratic windows supported currently >>> p1 = Point(0, 1) >>> p2 = Point(10,20)

+
+

source

+
+
+

ImgData

+
+
 ImgData (fname=None)
+
+

docstring for ImgData

+
+
# todo: Fix missing MOLA class
+#| export
+# class CTX(ImgData):
+#     """docstring for CTX"""
+
+#     def __init__(self, fname):
+#         ImgData.__init__(self, fname)
+
+#     def add_mola_contours(self):
+#         self.window_coords_to_lonlat()
+#         mola = MOLA()
+#         mola.window = self.window.copy()
+#         mola.window_coords_to_pixel()
+#         mola.read_window(mola.window)
+#         mola.data = mola.data - mola.data.mean()
+#         fig = plt.figure(figsize=(10, 10))
+#         ax = fig.add_subplot(111)
+#         plt.gray()
+#         ax.imshow(self.data, extent=self.window.get_extent(self.dataset))
+#         CS = ax.contour(
+#             mola.data,
+#             8,
+#             cmap=cm.jet,
+#             extent=self.window.get_extent(self.dataset),
+#             origin="image",
+#         )
+#         plt.clabel(CS, fontsize=13, inline=1)
+#         ax.set_xlabel("Polar stereographic X [km]")
+#         ax.set_ylabel("Polar stereographic Y [km]")
+#         ax.set_title("CTX: " + os.path.basename(self.fname))
+#         self.ax = ax
+#         plt.show()
+
+
+
# def combine_ctx_and_mola(ctxFilename, ctxSample, ctxLine, ctxWidth):
+#     """combine CTX and MOLA data.
+#
+#     MOLA and CTX data will be combined with these tools.
+#     User shall provide line,sample center coordinate of CTX file ROI to
+#     define distance in meters from southpole.
+#     """
+#
+#     ctx = CTX(ctxFilename)
+#     mola = MOLA()
+#     ctxULsample, ctxULline, ctxLRsample, ctxLRline = \
+#         get_corners_from_center(ctxSample, ctxLine, ctxWidth)
+#     ulX,ulY = get_coords_from_pixels(ctxDS, ctxULsample, ctxULline)
+#     lrX,lrY = get_coords_from_pixels(ctxDS, ctxLRsample, ctxLRline)
+#
+#     molaULsample,molaULline = get_pixels_from_coords(molaDS,ulX,ulY)
+#     molaLRsample,molaLRline = get_pixels_from_coords(molaDS,lrX,lrY)
+#     print(ctxULsample, ctxULline, ctxLRsample, ctxLRline)
+#     print(molaULsample, molaULline,molaLRsample, molaLRline)
+#     print(ulX,ulY,lrX,lrY)
+#     ctxData = ctxDS.ReadAsArray(ctxULsample,ctxULline,ctxWidth,ctxWidth)
+#     molaData = molaDS.ReadAsArray(int(molaULsample)+1,int(molaULline),
+#                                   int(molaLRsample - molaULsample),
+#                                   int(molaLRline - molaULline))
+#
+#     molaData = molaData - molaData.mean()
+#
+#     # x = np.arange(ulX,lrX)
+#     # y = np.arange(lrY,ulY)
+#     # X, Y = np.meshgrid(x,y)
+#     # plotting
+#     fig = plt.figure(figsize=(10,10))
+#     ax = fig.add_subplot(111)
+#     plt.gray()
+#     ax.imshow(ctxData, extent=(min(ulX,lrX),max(ulX,lrX),min(ulY,lrY),
+#                                      max(ulY,lrY)))
+#     CS = ax.contour(molaData, 20, cmap = cm.jet,
+#                      extent=(min(ulX,lrX),
+#                              max(ulX,lrX),
+#                              min(ulY,lrY),
+#                              max(ulY,lrY)),
+#                      origin='image' )
+#     plt.clabel(CS,fontsize=9, inline=1)
+#     plt.show()
+
+# def main(argv=None):
+#     """docstring for main"""
+#     from mayavi import mlab
+
+#     if argv is None:
+#         argv = sys.argv
+
+#     x1 = x2 = y1 = y2 = 0
+#     fname = ""
+#     try:
+#         fname = argv[1]
+#         x1, x2, y1, y2 = [int(i) for i in argv[2:]]
+#     except:
+#         print("Usage: {0} fname x1 x2 y1 y2".format(argv[0]))
+
+#     print(x1, x2, y1, y2)
+#     ds = gdal.Open(fname)
+#     band = ds.GetRasterBand(1)
+#     STORED_VALUE = band.ReadAsArray(x1, y1, x2 - x1, y2 - y1)
+#     ds = 0
+
+#     # PDS label infos:
+#     SCALING_FACTOR = 0.25
+#     OFFSET = -8000
+#     topo = (STORED_VALUE * SCALING_FACTOR) + OFFSET
+#     mlab.surf(topo, warp_scale=1 / 115.0, vmin=1700)
+#     mlab.colorbar(orientation="vertical", title="Height [m]", label_fmt="%4.0f")
+#     mlab.show()
+
+ + +
+
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/hirise.html b/api/hirise.html new file mode 100644 index 0000000..641da99 --- /dev/null +++ b/api/hirise.html @@ -0,0 +1,1695 @@ + + + + + + + + + + +planetarypy - HiRISE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

HiRISE

+
+ +
+
+ Data management for HiRISE data. +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

OBSID

+
+
 OBSID (obsid:str)
+
+

Manage HiRISE observation ids.

+

For example PSP_003092_0985. phase is set to PSP for orbits < 11000, no setting required.

+ + + + + + + + + + + + + + + +
TypeDetails
obsidstre.g. PSP_003092_0985
+
+
obsid = OBSID("PSP_003092_0985")
+obsid
+
+
PSP_003092_0985
+
+
+
+
assert obsid.orbit == "003092"
+
+
+
assert obsid.targetcode == "0985"
+
+
+
assert obsid.phase == "PSP"
+
+
+
assert obsid.upper_orbit_folder == "ORB_003000_003099"
+
+
+
assert obsid.storage_path_stem == "PSP/ORB_003000_003099/PSP_003092_0985"
+
+
+

source

+
+
+

ProductPathfinder

+
+
 ProductPathfinder (initstr:str, check_url:bool=True)
+
+

Determine paths and URLs for HiRISE RDR products (also EXTRAS.)

+

We use the PDS definition of PRODUCT_ID here, e.g. PSP_003092_0985_RED.

+

Attributes jp2_path and label_path get you the official RDR mosaic product, with kind steering if you get the COLOR or the RED product. All other properties go to the RDR/EXTRAS folder. The “PDS” part of the path is handled in the OBSID class.

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
initstrstrPRODUCT_ID string, e.g. PSP_003092_0985_RED
check_urlboolTruefor performance, the user might not want the url check
+
+
pid = "ESP_039983_1390_RED"
+
+
+
ppf = ProductPathfinder(pid)
+
+
+
ppf.storage_stem
+
+
'ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED'
+
+
+
+
ppf.local_label_path.exists()
+
+
False
+
+
+
+
ppf.edr_storage_stem
+
+
Path('EDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED')
+
+
+
+
ppf.download_label()
+
+ +
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_039983_1390/ESP_039983_1390_RED.LBL')
+
+
+
+
ppf.go_to_homepage()
+
+
4;1HPS connection to uahirise.org[22;24H                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Getting https://uahirise.org/ESP_039983_1390                                    
+
+
+
+
ppf.homepage
+
+
'https://uahirise.org/ESP_039983_1390'
+
+
+
+
assert isinstance(ppf.obsid, OBSID)
+
+
+
assert ppf.kind == "RED"
+
+
+
assert ppf.label_fname == "ESP_039983_1390_RED.LBL"
+
+
+
assert ppf.label_path == Path('RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.LBL')
+
+
+
+

Paths and URLS

+

Each xxx_path attribute is also available as xxx_url, and accessing the _url parameter immediately checks for its existence on the server.

+
+
# little helper to show attributes inside ProductPathfinder object...
+def _isprop(v):
+    return isinstance(v, property)
+
+
+def _get_properties(classname, substring):
+    names = [name for (name, value) in inspect.getmembers(classname, _isprop) if name.endswith(substring)]
+    return names
+
+
+
# Here I'm checking that all _url versions work, each access checks for existence:
+for prop in _get_properties(ProductPathfinder, "_path"):
+    if prop.startswith("local_label"):
+        continue
+    print(prop)
+    print(getattr(ppf, prop))
+    urlattr = prop.replace("_path", "_url")
+    print(urlattr)
+    url = getattr(ppf, urlattr)
+    print(url)
+
+
abrowse_path
+EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.abrowse.jpg
+abrowse_url
+https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.abrowse.jpg
+browse_path
+EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.browse.jpg
+browse_url
+https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.browse.jpg
+jp2_path
+RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.JP2
+jp2_url
+https://hirise-pds.lpl.arizona.edu/PDS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.JP2
+label_path
+RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.LBL
+label_url
+https://hirise-pds.lpl.arizona.edu/PDS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.LBL
+nomap_browse_path
+EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.browse.jpg
+nomap_browse_url
+https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.browse.jpg
+nomap_jp2_path
+EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.JP2
+nomap_jp2_url
+https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.JP2
+nomap_thumbnail_path
+EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.thumb.jpg
+nomap_thumbnail_url
+https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.thumb.jpg
+quicklook_path
+EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.QLOOK.JP2
+quicklook_url
+https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.QLOOK.JP2
+thumbnail_path
+EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.thumb.jpg
+thumbnail_url
+https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.thumb.jpg
+
+
+
+
ppf.storage_stem
+
+
'ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED'
+
+
+
+
ppf.nomap_browse_url
+
+
URL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.browse.jpg')
+
+
+
+
ppf.abrowse_url
+
+
URL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.abrowse.jpg')
+
+
+
+
ppf.nomap_jp2_path
+
+
'EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.JP2'
+
+
+
+

source

+
+
+

COLOR_PRODUCT

+
+
 COLOR_PRODUCT (obsid)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+

source

+
+
+

RGB_NOMAP

+
+
 RGB_NOMAP (obsid)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
obsid = "ESP_039983_1390"
+
+
+
rgb = RGB_NOMAP(obsid)
+
+
+
rgb.obsid
+
+
'ESP_039983_1390'
+
+
+
+
rgb.product_id
+
+
'ESP_039983_1390_RGB'
+
+
+
+
rgb.meta.head()
+
+
volume_id                                                         MROHR_0001
+file_name_specification    RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_...
+instrument_host_id                                                       MRO
+instrument_id                                                         HIRISE
+observation_id                                               ESP_039983_1390
+Name: 75508, dtype: object
+
+
+
+
rgb.local_path
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_039983_1390/ESP_039983_1390_RGB.NOMAP.JP2')
+
+
+
+
rgb.url
+
+
URL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RGB.NOMAP.JP2')
+
+
+
+
rgb.download(overwrite=False)
+
+
File exists. Use `overwrite=True` to download fresh.
+
+
+
+
rgb.read()
+
+ +
+ + + + + + + + + + + + + + +
<xarray.DataArray (band: 3, y: 20000, x: 2024)>
+dask.array<open_rasterio-3e88685e58afe3daaabd13b6ff29c609<this-array>, shape=(3, 20000, 2024), dtype=uint16, chunksize=(1, 2024, 2024), chunktype=numpy.ndarray>
+Coordinates:
+  * band         (band) int64 1 2 3
+  * x            (x) float64 0.5 1.5 2.5 3.5 ... 2.022e+03 2.022e+03 2.024e+03
+  * y            (y) float64 0.5 1.5 2.5 3.5 4.5 ... 2e+04 2e+04 2e+04 2e+04
+    spatial_ref  int64 0
+Attributes:
+    scale_factor:  1.0
+    add_offset:    0.0
+
+
+
+
rgb.show(xslice=slice(1000, 2000), yslice=slice(16000, 18000))
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+

source

+
+
+

RGB_NOMAPCollection

+
+
 RGB_NOMAPCollection (obsids)
+
+

Class to deal with a set of RGB_NOMAP products.

+
/home/runner/micromamba/envs/my-env/lib/python3.11/site-packages/fastcore/docscrape.py:225: UserWarning: Unknown section Example
+  else: warn(msg)
+
+

source

+
+
+

SOURCE_PRODUCT

+
+
 SOURCE_PRODUCT (spid, saveroot=None, check_url=True)
+
+

Manage SOURCE_PRODUCT id.

+
+
obsid = 'ESP_027021_1525_RED'
+
+
+
for i in range(10):
+    for ch in [0, 1]:
+        spid = f"{obsid}{i}_{ch}"
+        try:
+            SOURCE_PRODUCT(spid).download()
+        except ConnectionError:
+            pass
+
+
File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+File exists. Use `overwrite=True` to download fresh.
+
+
+
/tmp/ipykernel_1172729/2293453911.py:88: UserWarning: https://hirise-pds.lpl.arizona.edu/PDS/EDR/ESP/ORB_027000_027099/ESP_027021_1525/ESP_027021_1525_RED9_0.IMG does not exist on the server.
+  warnings.warn(f"{u} does not exist on the server.")
+/tmp/ipykernel_1172729/2293453911.py:88: UserWarning: https://hirise-pds.lpl.arizona.edu/PDS/EDR/ESP/ORB_027000_027099/ESP_027021_1525/ESP_027021_1525_RED9_1.IMG does not exist on the server.
+  warnings.warn(f"{u} does not exist on the server.")
+
+
+
+
sp = SOURCE_PRODUCT("ESP_027021_1525_RED0_0")
+
+
+
sp.local_path
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_027021_1525/ESP_027021_1525_RED0_0.IMG')
+
+
+
+
sp.download()
+
+
File exists. Use `overwrite=True` to download fresh.
+
+
+
+
sp.stitched_cube_path
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_027021_1525/ESP_027021_1525_RED0.cub')
+
+
+
+
sp.url
+
+
URL('https://hirise-pds.lpl.arizona.edu/PDS/EDR/ESP/ORB_027000_027099/ESP_027021_1525/ESP_027021_1525_RED0_0.IMG')
+
+
+
+
sp.remote_path
+
+
Path('EDR/ESP/ORB_027000_027099/ESP_027021_1525/ESP_027021_1525_RED0_0.IMG')
+
+
+
+
sp.local_path
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_027021_1525/ESP_027021_1525_RED0_0.IMG')
+
+
+
+
sp.channel
+
+
'0'
+
+
+
+
sp.ccd
+
+
'RED0'
+
+
+
+
sp.color
+
+
'RED'
+
+
+
+
sp.ccdno
+
+
'0'
+
+
+
+
sp.spid
+
+
'ESP_027021_1525_RED0_0'
+
+
+
+
sp
+
+
SOURCE_PRODUCT: ESP_027021_1525_RED0_0
+
+
+
+
sp.fname
+
+
'ESP_027021_1525_RED0_0.IMG'
+
+
+
+
sp.local_cube
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_027021_1525/ESP_027021_1525_RED0_0.cub')
+
+
+
+
sp.stitched_cube_name
+
+
'ESP_027021_1525_RED0.cub'
+
+
+
+
sp.stitched_cube_path.exists()
+
+
True
+
+
+
+

source

+
+
+

RED_PRODUCT

+
+
 RED_PRODUCT (obsid, ccdno, channel, **kwargs)
+
+

This exists to support creating a RED_PRODUCT_ID from parts of a SOURCE_PRODUCT id.

+
+
RED_PRODUCT("ESP_027021_1525", 4, 0).channel
+
+
'0'
+
+
+
+
rpid = RED_PRODUCT("ESP_039983_1390", "4", "0")
+rpid.spid
+
+
'ESP_039983_1390_RED4_0'
+
+
+
+
rpid.fname
+
+
'ESP_039983_1390_RED4_0.IMG'
+
+
+
+
rpid.url
+
+
URL('https://hirise-pds.lpl.arizona.edu/PDS/EDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED4_0.IMG')
+
+
+
+
rpid.download()
+
+
File exists. Use `overwrite=True` to download fresh.
+
+
+
+

source

+
+
+

BG_PRODUCT

+
+
 BG_PRODUCT (obsid, ccdno, channel)
+
+

Manage SOURCE_PRODUCT id.

+
+

source

+
+
+

IR_PRODUCT

+
+
 IR_PRODUCT (obsid, ccdno, channel)
+
+

Manage SOURCE_PRODUCT id.

+
+

source

+
+
+

RedMosaic

+
+
 RedMosaic (obsid)
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
obsid = "ESP_027021_1525"
+
+
+
red = RedMosaic(obsid)
+
+
+
!ls {red.local_path.parent}
+
+
B01_009958_1524_XI_27S347W.cal.cub   ESP_027021_1525_RED4_1.IMG
+B01_009958_1524_XI_27S347W.lev2.cub  ESP_027021_1525_RED4.cub
+cube2.lis                            ESP_027021_1525_RED4.map.cub
+cube.lis                             ESP_027021_1525_RED4.norm.cub
+ESP_027021_1525_RED0_0.cal.cub       ESP_027021_1525_RED5_0.cal.cub
+ESP_027021_1525_RED0_0.cub           ESP_027021_1525_RED5_0.cub
+ESP_027021_1525_RED0_0.hical.log     ESP_027021_1525_RED5_0.hical.log
+ESP_027021_1525_RED0_0.IMG           ESP_027021_1525_RED5_0.IMG
+ESP_027021_1525_RED0_1.cal.cub       ESP_027021_1525_RED5_1.cal.cub
+ESP_027021_1525_RED0_1.cub           ESP_027021_1525_RED5_1.cub
+ESP_027021_1525_RED0_1.hical.log     ESP_027021_1525_RED5_1.hical.log
+ESP_027021_1525_RED0_1.IMG           ESP_027021_1525_RED5_1.IMG
+ESP_027021_1525_RED0.cub             ESP_027021_1525_RED5.cub
+ESP_027021_1525_RED0.map.cub         ESP_027021_1525_RED5.map.cub
+ESP_027021_1525_RED0.norm.cub        ESP_027021_1525_RED5.map.cub.aux.xml
+ESP_027021_1525_RED1_0.cal.cub       ESP_027021_1525_RED5.norm.cub
+ESP_027021_1525_RED1_0.cub           ESP_027021_1525_RED6_0.cal.cub
+ESP_027021_1525_RED1_0.hical.log     ESP_027021_1525_RED6_0.cub
+ESP_027021_1525_RED1_0.IMG           ESP_027021_1525_RED6_0.hical.log
+ESP_027021_1525_RED1_1.cal.cub       ESP_027021_1525_RED6_0.IMG
+ESP_027021_1525_RED1_1.cub           ESP_027021_1525_RED6_1.cal.cub
+ESP_027021_1525_RED1_1.hical.log     ESP_027021_1525_RED6_1.cub
+ESP_027021_1525_RED1_1.IMG           ESP_027021_1525_RED6_1.hical.log
+ESP_027021_1525_RED1.cub             ESP_027021_1525_RED6_1.IMG
+ESP_027021_1525_RED1.map.cub         ESP_027021_1525_RED6.cub
+ESP_027021_1525_RED1.norm.cub        ESP_027021_1525_RED6.map.cub
+ESP_027021_1525_RED2_0.cal.cub       ESP_027021_1525_RED6.norm.cub
+ESP_027021_1525_RED2_0.cub           ESP_027021_1525_RED7_0.cal.cub
+ESP_027021_1525_RED2_0.hical.log     ESP_027021_1525_RED7_0.cub
+ESP_027021_1525_RED2_0.IMG           ESP_027021_1525_RED7_0.hical.log
+ESP_027021_1525_RED2_1.cal.cub       ESP_027021_1525_RED7_0.IMG
+ESP_027021_1525_RED2_1.cub           ESP_027021_1525_RED7_1.cal.cub
+ESP_027021_1525_RED2_1.hical.log     ESP_027021_1525_RED7_1.cub
+ESP_027021_1525_RED2_1.IMG           ESP_027021_1525_RED7_1.hical.log
+ESP_027021_1525_RED2.cub             ESP_027021_1525_RED7_1.IMG
+ESP_027021_1525_RED2.map.cub         ESP_027021_1525_RED7.cub
+ESP_027021_1525_RED2.norm.cub        ESP_027021_1525_RED7.map.cub
+ESP_027021_1525_RED3_0.cal.cub       ESP_027021_1525_RED7.norm.cub
+ESP_027021_1525_RED3_0.cub           ESP_027021_1525_RED8_0.cal.cub
+ESP_027021_1525_RED3_0.hical.log     ESP_027021_1525_RED8_0.cub
+ESP_027021_1525_RED3_0.IMG           ESP_027021_1525_RED8_0.hical.log
+ESP_027021_1525_RED3_1.cal.cub       ESP_027021_1525_RED8_0.IMG
+ESP_027021_1525_RED3_1.cub           ESP_027021_1525_RED8_1.cal.cub
+ESP_027021_1525_RED3_1.hical.log     ESP_027021_1525_RED8_1.cub
+ESP_027021_1525_RED3_1.IMG           ESP_027021_1525_RED8_1.hical.log
+ESP_027021_1525_RED3.cub             ESP_027021_1525_RED8_1.IMG
+ESP_027021_1525_RED3.map.cub         ESP_027021_1525_RED8.cub
+ESP_027021_1525_RED3.norm.cub        ESP_027021_1525_RED8.map.cub
+ESP_027021_1525_RED4_0.cal.cub       ESP_027021_1525_RED8.norm.cub
+ESP_027021_1525_RED4_0.cub           ESP_027021_1525_RED.LBL
+ESP_027021_1525_RED4_0.hical.log     normalized.lis
+ESP_027021_1525_RED4_0.IMG           point.txt
+ESP_027021_1525_RED4_1.cal.cub       print.prt
+ESP_027021_1525_RED4_1.cub           set_overlaps.txt
+ESP_027021_1525_RED4_1.hical.log
+
+
+ + +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/api/pds.apps.html b/api/pds.apps.html new file mode 100644 index 0000000..3dcab84 --- /dev/null +++ b/api/pds.apps.html @@ -0,0 +1,1669 @@ + + + + + + + + + + +planetarypy - Apps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Apps

+
+ +
+
+ User interface apps/functions to make using the PDS tools easy. +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

find_indexes

+
+
 find_indexes (instrument:str)
+
+

Find existing indexes for an instrument.

+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
instrumentstrDotted mission.instrument key, e.g. cassini.iss
ReturnslistList of configured index names
+
+
find_indexes("cassini.iss")
+
+
['index', 'inventory', 'moon_summary', 'ring_summary', 'saturn_summary']
+
+
+
+
find_indexes("mro.ctx")
+
+
['edr']
+
+
+
+

source

+
+
+

get_index

+
+
 get_index (instr:str, index_name:str='', refresh:bool=True,
+            force:bool=False)
+
+

Example: get_index(“cassini.iss”, “index”)

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
instrstrDotted instrument index, e.g. cassini.iss
index_namestrIndex name, for exmample ‘moon_summary. Optional’
refreshboolTrueswitch to refresh an index (i.e. download if update available).
Set to False for faster return time to avoid web scraping
forceboolFalseswitch off for faster return time.
ReturnsDataFrameThe PDS index convert to pandas DataFrame
+
+
instr = "cassini.iss"
+index_name = "moon_summary"
+
+
+
index = get_index(instr, index_name, refresh=False)
+
+
+
index
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDFILE_SPECIFICATION_NAMEOPUS_IDTARGET_NAMEMINIMUM_PLANETOCENTRIC_LATITUDEMAXIMUM_PLANETOCENTRIC_LATITUDEMINIMUM_PLANETOGRAPHIC_LATITUDEMAXIMUM_PLANETOGRAPHIC_LATITUDEMINIMUM_IAU_LONGITUDEMAXIMUM_IAU_LONGITUDE...MAXIMUM_EMISSION_ANGLESUB_SOLAR_PLANETOCENTRIC_LATITUDESUB_SOLAR_PLANETOGRAPHIC_LATITUDESUB_OBSERVER_PLANETOCENTRIC_LATITUDESUB_OBSERVER_PLANETOGRAPHIC_LATITUDESUB_SOLAR_IAU_LONGITUDESUB_OBSERVER_IAU_LONGITUDECENTER_RESOLUTIONCENTER_DISTANCECENTER_PHASE_ANGLE
0COISS_2001data/1454725799_1455008789/N1454725799_1.LBLco-iss-n1454725799RHEA-999.0-999.0-999.0-999.0-999.0-999.0...-999.0-25.206-25.442-16.566-16.558183.907252.947423.635670701354.36664.429
1COISS_2001data/1454725799_1455008789/N1454725799_1.LBLco-iss-n1454725799HELENE-999.0-999.0-999.0-999.0-999.0-999.0...-999.0-25.532-50.716-16.532-36.57148.17217.149424.3690270823757.00264.345
2COISS_2001data/1454725799_1455008789/N1454725799_1.LBLco-iss-n1454725799TELESTO-999.0-999.0-999.0-999.0-999.0-999.0...-999.0-26.061-51.51-15.639-21.616189.199257.807424.2874670810144.51964.28
3COISS_2001data/1454725799_1455008789/N1454726579_1.LBLco-iss-n1454726579TITAN-36.111-36.111-36.111-36.1110.0360.0...54.704-25.325-25.325-16.28-16.28340.09247.855428.8967371579395.06663.37
4COISS_2001data/1454725799_1455008789/N1454727359_1.LBLco-iss-n1454727359HYPERION-999.0-999.0-999.0-999.0-999.0-999.0...-999.011.77725.90744.10457.544173.985237.769418.9454569918606.58663.093
..................................................................
385714COISS_2116data/1884017637_1884113741/N1884017911_1.LBLco-iss-n1884017911TITAN-14.35272.101-14.35272.101229.956329.975...89.06926.64426.64423.59923.59932.084299.3894.64069774493.281.887
385715COISS_2116data/1884017637_1884113741/N1884018021_1.LBLco-iss-n1884018021TITAN-14.59771.882-14.59771.882230.932330.255...88.91326.64426.64423.59423.59432.107299.4154.64263774816.73181.888
385716COISS_2116data/1884017637_1884113741/N1884018579_1.LBLco-iss-n1884018579TITAN-14.43572.643-14.43572.643228.942330.644...88.86926.64426.64423.5723.5732.217299.5369.30328776321.46681.889
385717COISS_2116data/1884017637_1884113741/N1884091792_1.LBLco-iss-n1884091792DAPHNIS-999.0-999.0-999.0-999.0-999.0-999.0...-999.026.68439.96625.32138.64294.939124.6414.56619762060.157127.157
385718COISS_2116data/1884017637_1884113741/N1884109343_1.LBLco-iss-n1884109343PANDORA40.38463.74956.97376.9520.0360.0...62.43526.68649.38633.09553.259335.495142.0163.45805577120.582118.858
+ +

385719 rows × 35 columns

+
+
+
+

Indexes can be given as 2 parameters (“cassini.iss”, “ring_summary”) or one (“cassini.iss.ring_summary”):

+
+
index = get_index("cassini.iss", "ring_summary", refresh=False)
+index.head()
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDFILE_SPECIFICATION_NAMEOPUS_IDMINIMUM_RIGHT_ASCENSIONMAXIMUM_RIGHT_ASCENSIONMINIMUM_DECLINATIONMAXIMUM_DECLINATIONMINIMUM_RING_RADIUSMAXIMUM_RING_RADIUSFINEST_RING_INTERCEPT_RESOLUTION...RING_CENTER_DISTANCESUB_SOLAR_RING_LONGITUDESUB_OBSERVER_RING_LONGITUDERING_CENTER_PHASE_ANGLERING_CENTER_INCIDENCE_ANGLERING_CENTER_NORTH_BASED_INCIDENCE_ANGLERING_CENTER_EMISSION_ANGLERING_CENTER_NORTH_BASED_EMISSION_ANGLESOLAR_RING_OPENING_ANGLEOBSERVER_RING_OPENING_ANGLE
0COISS_2001data/1454725799_1455008789/N1454725799_1.LBLco-iss-n145472579935.52839835.9055559.71963710.091212205899.3351098621.586419.0137...70874998.947284.523215.95164.0764.589115.41173.676106.324-25.411-16.324
1COISS_2001data/1454725799_1455008789/N1454726579_1.LBLco-iss-n145472657936.66289837.0390389.5901149.960833721136.1551745689.307421.97145...70870851.371284.524215.95164.0764.589115.41173.676106.324-25.411-16.324
2COISS_2001data/1454725799_1455008789/N1454727359_1.LBLco-iss-n145472735936.92806637.3043349.87959310.250111042341.4382186830.92414.79041...70866703.094284.524215.95164.07164.589115.41173.676106.324-25.411-16.324
3COISS_2001data/1454725799_1455008789/N1454728139_1.LBLco-iss-n145472813928.1004228.4796186.2247096.601574-999.0-999.0-999.0...70862557.207284.524215.95164.07164.589115.41173.676106.324-25.411-16.324
4COISS_2001data/1454725799_1455008789/N1454728919_1.LBLco-iss-n145472891937.98141838.35779110.61194710.9816973865717.5893905151.343405.91234...70858406.794284.525215.95164.07164.589115.41173.676106.324-25.411-16.324
+ +

5 rows × 59 columns

+
+
+
+
+
index = get_index("cassini.iss.ring_summary", refresh=False)
+index.head()
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDFILE_SPECIFICATION_NAMEOPUS_IDMINIMUM_RIGHT_ASCENSIONMAXIMUM_RIGHT_ASCENSIONMINIMUM_DECLINATIONMAXIMUM_DECLINATIONMINIMUM_RING_RADIUSMAXIMUM_RING_RADIUSFINEST_RING_INTERCEPT_RESOLUTION...RING_CENTER_DISTANCESUB_SOLAR_RING_LONGITUDESUB_OBSERVER_RING_LONGITUDERING_CENTER_PHASE_ANGLERING_CENTER_INCIDENCE_ANGLERING_CENTER_NORTH_BASED_INCIDENCE_ANGLERING_CENTER_EMISSION_ANGLERING_CENTER_NORTH_BASED_EMISSION_ANGLESOLAR_RING_OPENING_ANGLEOBSERVER_RING_OPENING_ANGLE
0COISS_2001data/1454725799_1455008789/N1454725799_1.LBLco-iss-n145472579935.52839835.9055559.71963710.091212205899.3351098621.586419.0137...70874998.947284.523215.95164.0764.589115.41173.676106.324-25.411-16.324
1COISS_2001data/1454725799_1455008789/N1454726579_1.LBLco-iss-n145472657936.66289837.0390389.5901149.960833721136.1551745689.307421.97145...70870851.371284.524215.95164.0764.589115.41173.676106.324-25.411-16.324
2COISS_2001data/1454725799_1455008789/N1454727359_1.LBLco-iss-n145472735936.92806637.3043349.87959310.250111042341.4382186830.92414.79041...70866703.094284.524215.95164.07164.589115.41173.676106.324-25.411-16.324
3COISS_2001data/1454725799_1455008789/N1454728139_1.LBLco-iss-n145472813928.1004228.4796186.2247096.601574-999.0-999.0-999.0...70862557.207284.524215.95164.07164.589115.41173.676106.324-25.411-16.324
4COISS_2001data/1454725799_1455008789/N1454728919_1.LBLco-iss-n145472891937.98141838.35779110.61194710.9816973865717.5893905151.343405.91234...70858406.794284.525215.95164.07164.589115.41173.676106.324-25.411-16.324
+ +

5 rows × 59 columns

+
+
+
+
+
get_index("mro.ctx.edr", refresh=False)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDFILE_SPECIFICATION_NAMEORIGINAL_PRODUCT_IDPRODUCT_IDIMAGE_TIMEINSTRUMENT_IDINSTRUMENT_MODE_IDLINE_SAMPLESLINESSPATIAL_SUMMING...SUB_SOLAR_LATITUDESUB_SPACECRAFT_LONGITUDESUB_SPACECRAFT_LATITUDESOLAR_DISTANCESOLAR_LONGITUDELOCAL_TIMEIMAGE_SKEW_ANGLERATIONALE_DESCDATA_QUALITY_DESCORBIT_NUMBER
0MROX_0001DATA/CRU_000001_9999_XN_99N999W.IMG4A_04_0001000400CRU_000001_9999_XN_99N999W2005-08-30 15:40:21.549CTXNIFL505610241...0.00.00.00.0278.8910.160.0Instrument checkout image of spaceOK-4242
1MROX_0001DATA/CRU_000002_9999_XN_99N999W.IMG4A_04_0001000500CRU_000002_9999_XN_99N999W2005-09-08 15:59:45.313CTXNIFL5056153601...0.00.00.00.0284.484.60.0Calibration image of the MoonOK-4126
2MROX_0001DATA/CRU_000003_9999_XN_99N999W.IMG4A_04_0001000600CRU_000003_9999_XN_99N999W2005-09-08 16:03:37.927CTXNIFL505620481...0.00.00.00.0284.484.660.0Calibration image of Omega Centauri (globular ...OK-4126
3MROX_0001DATA/CRU_000004_9999_XN_99N999W.IMG4A_04_0001000700CRU_000004_9999_XN_99N999W2005-09-08 16:08:23.841CTXNIFL505620481...0.00.00.00.0284.484.740.0Calibration image of Omega Centauri (globular ...OK-4126
4MROX_0001DATA/CRU_000005_9999_XN_99N999W.IMG4A_04_0001000800CRU_000005_9999_XN_99N999W2005-09-08 16:11:18.649CTXNIFL5056215041...0.00.00.00.0284.484.790.0Calibration image of the MoonOK-4126
..................................................................
138410MROX_4461DATA/U14_076622_1804_XN_00N105W.IMG4A_04_118404B100U14_076622_1804_XN_00N105W2022-11-30 17:29:26.742CTXNIFL5056337921...-5.6105.050.45228081883.9346.914.3989.7Terrain northwest of Noctis LabyrinthusOK76622
138411MROX_4461DATA/U14_076622_2009_XI_20N108W.IMG4A_04_118504B200U14_076622_2009_XI_20N108W2022-11-30 17:36:13.062CTXITL505671681...-5.6107.6120.98228082990.5346.914.390.1Candidate impact site formed at most between M...OK76622
138412MROX_4461DATA/U14_076623_1977_XN_17N133W.IMG4A_04_118404B300U14_076623_1977_XN_17N133W2022-11-30 19:26:53.410CTXNIFL5056358401...-5.59134.4517.69228097986.1346.9414.3790.1Ride-along with HiRISEOK76623
138413MROX_4461DATA/U14_076625_1182_XN_61S177W.IMG4A_04_118404B800U14_076625_1182_XN_61S177W2022-11-30 22:46:27.741CTXNIFL5056522241...-5.56177.43-61.87228126022.3347.0114.7190.4Southern highlandsOK76625
138414MROX_4461DATA/U14_076625_1714_XN_08S185W.IMG4A_04_118404B900U14_076625_1714_XN_08S185W2022-11-30 23:02:50.690CTXNIFL5056522241...-5.55185.83-8.75228127015.7347.0214.4590.5Ride-along with HiRISEOK76625
+ +

138415 rows × 51 columns

+
+
+
+
+

source

+
+
+

find_instruments

+
+
 find_instruments (mission:str)
+
+

Find existing instruments for a mission.

+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
missionstrMission string, e.g. “cassini”
ReturnslistList of configured instrument names
+
+
find_instruments("cassini")
+
+
['iss', 'uvis']
+
+
+
+
find_instruments("mro")
+
+
['hirise', 'ctx']
+
+
+
+
from nbdev import nbdev_export
+nbdev_export()
+
+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/pds.crism_index.html b/api/pds.crism_index.html new file mode 100644 index 0000000..f43a6d2 --- /dev/null +++ b/api/pds.crism_index.html @@ -0,0 +1,927 @@ + + + + + + + + + + +planetarypy - CRISM PDS Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

CRISM PDS Index

+
+ +
+
+ Tools to work with the CRISM PDS index files +
+
+ + +
+ + + + +
+ + +
+ + +
+
url = URL("https://pds-geosciences.wustl.edu/mro/mro-m-crism-5-rdr-mptargeted-v1/mrocr_4001/index/mtrdr0705_index.lbl")
+
+
+

source

+
+

MTRDRIndex

+
+
 MTRDRIndex (url)
+
+

Index manager class.

+

This class manages one index, identified by a dotted key, e.g. cassini.iss.ring_summary

+
+
index = MTRDRIndex(url=url)
+
+
+
index.download()
+
+ +
+
+ +
+
+
Downloaded /home/ayek72/mnt/slowdata/planetarypy/missions/mro/crism/indexes/mtrdr/mtrdr0705_index.lbl and /home/ayek72/mnt/slowdata/planetarypy/missions/mro/crism/indexes/mtrdr/mtrdr0705_index.tab
+Done.
+
+
+
+
index.convert_to_parquet()
+
+
Done.
+
+
+
+
index.parquet
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDPRODUCT_IDPRODUCT_TYPEFILE_SPECIFICATION_NAMEPARTICIPATING_INSTRUMENTSPRODUCT_CREATION_TIMESTART_TIMESTOP_TIMESPACECRAFT_CLOCK_START_COUNTSPACECRAFT_CLOCK_STOP_COUNT...WESTERNMOST_LONGITUDEEASTERNMOST_LONGITUDELOWER_RIGHT_LATITUDELOWER_RIGHT_LONGITUDELOWER_LEFT_LATITUDELOWER_LEFT_LONGITUDEUPPER_RIGHT_LATITUDEUPPER_RIGHT_LONGITUDEUPPER_LEFT_LATITUDEUPPER_LEFT_LONGITUDE
0MROCR_4001FRT00005F0C_07_IF163J_MTR3MPTARGETED_RDRMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...<NA>2015-06-12 09:00:202007-05-28 17:30:38.6052007-05-28 17:32:22.3392/0864840658.002252/0864840761.48344...52.853.267-99.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999
1MROCR_4001FRT00005F0C_07_WV163J_MTR3MPTARGETED_RDRMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...<NA>2015-06-12 09:00:202007-05-28 17:30:38.6052007-05-28 17:32:22.3392/0864840658.002252/0864840761.48344...-999.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999
2MROCR_4001FRT00005F0C_07_IN163J_MTR3MPTARGETED_RDRMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...<NA>2015-06-12 09:04:092007-05-28 17:30:38.6052007-05-28 17:32:22.3392/0864840658.002252/0864840761.48344...52.853.267-99.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999
3MROCR_4001FRT00005F0C_07_DE163L_MTR1MAP_PROJECTED_DDRMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...<NA>2015-06-12 09:04:032007-05-28 17:30:38.6052007-05-28 17:32:22.3392/864840658:2252/864840761:48344...52.853.267-62.7153.27-62.7652.84-62.5953.23-62.652.8
4MROCR_4001FRT00005F0C_07_SU163J_MTR3MPTARGETED_RDRMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...<NA>2015-06-12 09:00:292007-05-28 17:30:38.6052007-05-28 17:32:22.3392/0864840658.002252/0864840761.48344...52.853.267-99.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999
..................................................................
553MROCR_4001FRT00005DAC_07_IF165J_MTR3MPTARGETED_RDRMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...<NA>2015-06-12 07:20:092007-05-24 07:16:57.9262007-05-24 07:18:57.6602/0864458237.210462/0864458357.03629...156.527156.771-99.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999
554MROCR_4001FRT00005DAC_07_DE165L_MTR1MAP_PROJECTED_DDRMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...<NA>2015-06-12 07:22:512007-05-24 07:16:57.9262007-05-24 07:18:57.6602/864458237:210462/864458357:3629...156.527156.7719.67156.779.66156.549.88156.759.84156.53
555MROCR_4001FRT00005DAC_07_WV165J_MTR3MPTARGETED_RDRMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...<NA>2015-06-12 07:20:092007-05-24 07:16:57.9262007-05-24 07:18:57.6602/0864458237.210462/0864458357.03629...-999.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999
556MROCR_4001FRT00005DAC_07_IN165J_MTR3MPTARGETED_RDRMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...<NA>2015-06-12 07:22:562007-05-24 07:16:57.9262007-05-24 07:18:57.6602/0864458237.210462/0864458357.03629...156.527156.771-99.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999
557MROCR_4001FRT00005DAC_07_SU165J_MTR3MPTARGETED_RDRMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...<NA>2015-06-12 07:20:172007-05-24 07:16:57.9262007-05-24 07:18:57.6602/0864458237.210462/0864458357.03629...156.527156.771-99.999-999.999-99.999-999.999-99.999-999.999-99.999-999.999
+ +

558 rows × 57 columns

+
+
+
+ + +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/api/pds.ctx_index.html b/api/pds.ctx_index.html new file mode 100644 index 0000000..fe1f60e --- /dev/null +++ b/api/pds.ctx_index.html @@ -0,0 +1,686 @@ + + + + + + + + + + +planetarypy - CTX Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

CTX Index

+
+ +
+
+ Scraping the latest CTX index file from the latest added volume. +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

CTXIndex

+
+
 CTXIndex ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
ctx = CTXIndex()
+
+
+
ctx.volumes_table
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameLast modified
2mrox_0001/05-Jun-2007 10:15
3mrox_0001_md5.txt10-Dec-2019 04:32
4mrox_0002/05-Jun-2007 10:15
5mrox_0002_md5.txt09-Dec-2019 19:14
6mrox_0003/05-Jun-2007 10:15
.........
9515mrox_4757_md5.txt15-Nov-2023 23:23
9516mrox_4758/15-Nov-2023 23:08
9517mrox_4758_md5.txt15-Nov-2023 23:23
9518mrox_4759/15-Nov-2023 23:10
9519mrox_4759_md5.txt15-Nov-2023 23:23
+ +

9518 rows × 2 columns

+
+
+
+
+
ctx.latest_release_folder
+
+
'mrox_4759/'
+
+
+
+
ctx.latest_release_number
+
+
'4759'
+
+
+
+
ctx.latest_index_label_url
+
+
URL('https://planetarydata.jpl.nasa.gov/img/data/mro/mars_reconnaissance_orbiter/ctx/mrox_4759/index/cumindex.lbl')
+
+
+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/pds.indexes.html b/api/pds.indexes.html new file mode 100644 index 0000000..feecef8 --- /dev/null +++ b/api/pds.indexes.html @@ -0,0 +1,784 @@ + + + + + + + + + + +planetarypy - PDS Indexes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

PDS Indexes

+
+ +
+
+ Support tools to work with PDS index files. +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

Index

+
+
 Index (key:str, url:str=None, check_update:bool=True)
+
+

Index manager class.

+

This class manages one index, identified by a dotted key, e.g. cassini.iss.ring_summary

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
keystrNested (dotted) key, e.g. cassini.iss.ring_summary
urlstrNoneURL to index. If not given, will be read from config object.
check_updateboolTrueswitch if dynamic URLS will be derived upon start
+
+

source

+
+
+

Index.parse_key

+
+
 Index.parse_key (key:str)
+
+

Take care of different ways how the key could be structured.

+

This involves adding the sub-key indexes for the config file structure, which is something the user of this class should not need to know.

+ + + + + + + + + + + + + + + +
TypeDetails
keystrdotted key
+
+

source

+
+
+

Index.download

+
+
 Index.download ()
+
+

Wrapping URLs for downloading PDS indices and their label files.

+
+

source

+
+
+

Index.update_available

+
+
 Index.update_available ()
+
+

Property indicating if the index needs to be downloaded.

+
+
key = "missions.cassini.iss.indexes.moon_summary"
+key = "missions.lro.lroc.edr"
+
+
+
index = Index(key, check_update=True)
+index
+
+
Key: missions.lro.lroc.indexes.edr
+URL: http://pds.lroc.asu.edu/data/LRO-L-LROC-2-EDR-V1.0/LROLRC_0048C/INDEX/CUMINDEX.LBL
+Timestamp: 2023-10-10 15:30:56.195462
+
+
+
+
index.key
+
+
'missions.lro.lroc.indexes.edr'
+
+
+
+
index.label_filename
+
+
Path('CUMINDEX.LBL')
+
+
+
+
index.url
+
+
'http://pds.lroc.asu.edu/data/LRO-L-LROC-2-EDR-V1.0/LROLRC_0048C/INDEX/CUMINDEX.LBL'
+
+
+
+
index.local_dir
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/lro/lroc/indexes/edr')
+
+
+
+
if index.check_update and index.update_available:
+    index.download()
+
+

The key can be provided * with or without the leading ‘missions’ * with or without the internal indexes level of the config file

+
+
Index("cassini.iss.moon_summary")
+
+
Key: missions.cassini.iss.indexes.moon_summary
+URL: https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl
+Timestamp: 2019-06-08 16:28:22
+
+
+
+
Index("cassini.iss.indexes.moon_summary")
+
+
Key: missions.cassini.iss.indexes.moon_summary
+URL: https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl
+Timestamp: 2019-06-08 16:28:22
+
+
+
+
index.isotimestamp
+
+
'2023-10-10T15:30:56.195462'
+
+
+
+
index.mission_key
+
+
'lro'
+
+
+
+
index.local_dir
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/lro/lroc/indexes/edr')
+
+
+
+
index.key_tokens[:2]
+
+
['missions', 'lro']
+
+
+
+
index.instrument_key
+
+
'lro.lroc'
+
+
+
+
config.get_value(index.instrument_key)
+
+
{'indexes': {'edr': {'url': 'http://pds.lroc.asu.edu/data/LRO-L-LROC-2-EDR-V1.0/LROLRC_0048C/INDEX/CUMINDEX.LBL', 'timestamp': '2023-10-10T15:30:56.195462'}}}
+
+
+
+
index = Index('mro.ctx.edr', check_update=False)
+
+
+
index.url
+
+
''
+
+
+
+
index.label_filename
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/indexes/edr/cumindex.lbl')
+
+
+
+
list(index.local_dir.glob("*.[lL][bB][lL]"))
+
+
[Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/indexes/edr/cumindex.lbl')]
+
+
+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/pds.lroc_index.html b/api/pds.lroc_index.html new file mode 100644 index 0000000..f1a22a5 --- /dev/null +++ b/api/pds.lroc_index.html @@ -0,0 +1,613 @@ + + + + + + + + + + +planetarypy - LROC Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

LROC Index

+
+ +
+
+ LROC Index is not at a fixed URL, so need to determine dynamically. +
+
+ + +
+ + + + +
+ + +
+ + +
+

EDR vs RDR etc.

+

I cannot distinguish between different data levels for dynamic index URLs yet, as is required for LROC, so for now I only implement the EDR index, pretending it’s the only one!

+
+

source

+
+

LROCIndex

+
+
 LROCIndex ()
+
+

Initialize self. See help(type(self)) for accurate signature.

+
+
lroc = LROCIndex()
+
+
+
lroc.latest_release_folder
+
+
'LROLRC_0056A/'
+
+
+
+
lroc.latest_release_number
+
+
'0056A'
+
+
+
+
lroc.latest_index_label_url
+
+
URL('https://pds.lroc.asu.edu/data/LRO-L-LROC-2-EDR-V1.0/LROLRC_0056A/INDEX/CUMINDEX.LBL')
+
+
+ + +
+
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/pds.opusapi.html b/api/pds.opusapi.html new file mode 100644 index 0000000..759131e --- /dev/null +++ b/api/pds.opusapi.html @@ -0,0 +1,611 @@ + + + + + + + + + + +planetarypy - OPUSAPI class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

OPUSAPI class

+
+ +
+
+ A simple wrapper to get data from the Rings-Moons Systems PDS node +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

OPUS

+
+
 OPUS (silent=False)
+
+

Manage OPUS API requests.

+
+

source

+
+
+

OPUSObsID

+
+
 OPUSObsID (obsid_data)
+
+

Manage observation IDs from OPUS responses.

+
+

source

+
+
+

OPUSImageURL

+
+
 OPUSImageURL (jsonlist)
+
+

Manage URLS from the OPUS response.

+
+
opus = OPUS()
+
+
+
opus.query_image_id("FUV2003_363_00_22")
+
+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/pds.utils.html b/api/pds.utils.html new file mode 100644 index 0000000..05dbf38 --- /dev/null +++ b/api/pds.utils.html @@ -0,0 +1,746 @@ + + + + + + + + + + +planetarypy - PDS Utils + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

PDS Utils

+
+ +
+
+ Utilities used by the pds sub-package. +
+
+ + +
+ + + + +
+ + +
+ + +
+

source

+
+

IndexLabel

+
+
 IndexLabel (labelpath:Union[str,pathlib.Path])
+
+

Support working with label files of PDS Index tables.

+ +++++ + + + + + + + + + + + + + + +
TypeDetails
labelpathUnionPath to the labelfile for a PDS Indexfile.
The actual table should reside in the same folder to be automatically parsed
when calling the read_index_data method.
+
+

source

+
+
+

index_to_df

+
+
 index_to_df (indexpath:Union[str,pathlib.Path],
+              label:__main__.IndexLabel, convert_times=True)
+
+

The main reader function for PDS Indexfiles.

+

In conjunction with an IndexLabel object that figures out the column widths, this reader should work for all PDS TAB files.

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
indexpathUnionPath to the index TAB file
labelIndexLabelLabel object that has both the column names and the columns widths as attributes
‘colnames’ and ‘colspecs’
convert_timesboolTrueSwitch to control if to convert columns with “TIME” in name (unless COUNT is as well in name) to datetime
+
+

source

+
+
+

PVLColumn

+
+
 PVLColumn (pvlobj)
+
+

Manages just one of the columns in a table that is described via PVL.

+
+

source

+
+
+

decode_line

+
+
 decode_line (linedata:str, labelpath:Union[str,pathlib.Path])
+
+

Decode one line of tabbed data with the appropriate label file.

+ +++++ + + + + + + + + + + + + + + + + + + + +
TypeDetails
linedatastrOne line of a .tab data file
labelpathUnionPath to the appropriate label that describes the data.
+
+

source

+
+
+

find_mixed_type_cols

+
+
 find_mixed_type_cols (df:pandas.core.frame.DataFrame, fix:bool=True)
+
+

For a given dataframe, find the columns that are of mixed type.

+

Tool to help with the performance warning when trying to save a pandas DataFrame as a HDF. When a column changes datatype somewhere, pickling occurs, slowing down the reading process of the HDF file.

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
dfDataFrameDataframe to be searched for mixed data-types
fixboolTrueSwitch to control if NaN values in these problem columns should be replaced by the string ‘UNKNOWN’
ReturnslistList of column names that have data type changes within themselves.
+
+

source

+
+
+

fix_hirise_edrcumindex

+
+
 fix_hirise_edrcumindex (infname:Union[str,pathlib.Path],
+                         outfname:Union[str,pathlib.Path])
+
+

Fix HiRISE EDRCUMINDEX.

+

The HiRISE EDRCUMINDEX has some broken lines where the SCAN_EXPOSURE_DURATION is of format F10.4 instead of the defined F9.4. This function simply replaces those incidences with one less decimal fraction, so 20000.0000 becomes 20000.000.

+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
infnameUnionPath to broken EDRCUMINDEX.TAB
outfnameUnionPath where to store the fixed TAB file
+ + +
+ +
+ +
+ + + + \ No newline at end of file diff --git a/api/spice.kernels.html b/api/spice.kernels.html new file mode 100644 index 0000000..b848128 --- /dev/null +++ b/api/spice.kernels.html @@ -0,0 +1,1984 @@ + + + + + + + + + + +planetarypy - SPICE Kernels + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

SPICE Kernels

+
+ +
+
+ Tools to manage SPICE kernels +
+
+ + +
+ + + + +
+ + +
+ + +
+

Intro

+

Feature list for this module:

+
    +
  • Receive the list of supported datasets for automatic retrieval of archived SPICE kernels +
      +
    • The supported datasets are tabled here at NAIF: https://naif.jpl.nasa.gov/naif/data_archived.html
    • +
  • +
  • Receive the list of required SPICE kernels for a given mission and time range
  • +
  • Automatic download of kernels for a given mission and time range either into a given location or the planetarypy local archive.
  • +
+

As always in planetarypy the general design philosophy is to first develop a management class to give the user full control over all the details, and then add easy-to-use function for the end-user that do the most frequently used things in one go. (See section “User Functions”)

+
+
+

Identifying and downloading kernel sets

+

One repeating task for SPICE calculations is the identification and retrieval of all SPICE kernels for a mission for a given time interval.

+

The folks at NAIF offer a “Subset” feature at their servers. Here we set up a table of the currently supported datasets:

+
+
datasets
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
pathMission NamePDS3 or PDS4Data Size (GB)Start TimeStop Time
shorthand
bcbc/bc_spiceBepiColombo41.12018-10-202023-01-01
cassinico-s_j_e_v-spice-6-v1.0/cosp_1000Cassini Orbiter362.51997-10-152017-09-15
clementineclem1-l-spice-6-v1.0/clsp_1000Clementine30.81994-01-261994-05-07
dartdart/dart_spiceDART49.12021-11-092050-01-01
dawndawn-m_a-spice-6-v1.0/dawnsp_1000DAWN386.42007-09-272018-10-31
didi-c-spice-6-v1.0/disp_1000Deep Impact30.72005-01-122005-08-09
ds1ds1-a_c-spice-6-v1.0/ds1sp_1000Deep Space 130.91998-10-242001-12-18
epoxidif-c_e_x-spice-6-v1.0/epxsp_1000EPOXI31.02005-08-232011-03-01
em16em16/em16_spiceExoMars TGO 201649.42016-03-142023-01-01
grailgrail-l-spice-6-v1.0/grlsp_1000GRAIL34.32011-09-102012-12-17
hayabusahay-a-spice-6-v1.0/haysp_1000Hayabusa30.32005-09-112005-11-19
insightinsight/insight_spiceInSight40.92018-05-052022-12-15
junojno-j_e_ss-spice-6-v1.0/jnosp_1000JUNO346.92011-08-052022-08-17
ladeeladee/ladee_spiceLADEE40.62013-09-072050-01-01
lrolro-l-spice-6-v1.0/lrosp_1000Lunar Reconnaissance Orbiter3595.72009-06-182023-03-15
mavenmaven/maven_spiceMAVEN454.42013-11-182023-04-01
opportunitymer1-m-spice-6-v1.0/mer1sp_1000MER 1 (Opportunity)34.12003-07-072018-06-10
spiritmer2-m-spice-6-v1.0/mer2sp_1000MER 2 (Spirit)32.62003-06-102010-05-03
messengermess-e_v_h-spice-6-v1.0/messsp_1000MESSENGER344.82004-08-032015-04-30
mars2020mars2020/mars2020_spiceMars 202040.62020-07-302022-12-28
mexmex-e_m-spice-6-v2.0/mexsp_2000Mars Express38.52003-06-022022-11-30
mgsmgs-m-spice-6-v1.0/mgsp_1000Mars Global Surveyor315.41996-11-062006-11-02
odyody-m-spice-6-v1.0/odsp_1000Mars Odyssey333.22001-04-072022-10-01
mromro-m-spice-6-v1.0/mrosp_1000Mars Reconnaissance Orbiter3314.92005-08-122023-04-01
mslmsl-m-spice-6-v1.0/mslsp_1000Mars Science Laboratory30.62011-11-262022-11-06
nearnear-a-spice-6-v1.0/nearsp_1000NEAR32.41996-05-302001-02-28
nhnh-j_p_ss-spice-6-v1.0/nhsp_1000New Horizons31.62006-01-192019-12-30
orexorex/orex_spiceOSIRIS-REx4418.42016-09-082021-02-22
rosettaro_rl-e_m_a_c-spice-6-v1.0/rossp_1000Rosetta35.92004-03-022017-01-01
stardustsdu-c-spice-6-v1.0/sdsp_1000Stardust31.91999-02-072011-05-01
venus_climate_orbitervco/vco_spiceVenus Climate Orbiter41.72010-05-212022-01-01
vexvex-e_v-spice-6-v2.0/vexsp_2000Venus Express35.02005-11-092015-02-06
vovo1_vo2-m-spice-6-v1.0/vosp_1000Viking Orbiter30.11976-06-161980-07-30
+ +
+
+
+

To receive this dataframe:

+
from planetarypy.spice.kernels import datasets
+

Some validation helpers:

+
+

source

+
+

is_stop_valid

+
+
 is_stop_valid (mission:str, stop:astropy.time.core.Time)
+
+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
missionstrmission shorthand label of datasets dataframe
stopTimestop time in astropy.Time format
+
+

source

+
+
+

is_start_valid

+
+
 is_start_valid (mission:str, start:astropy.time.core.Time)
+
+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
missionstrmission shorthand label of datasets dataframe
startTimestart time in astropy.Time format
+
+
assert is_start_valid("cassini", Time("1998-01-01")) is True
+assert is_start_valid("cassini", Time("1997-01-01")) is False
+assert is_stop_valid("cassini", "2017-01-01") is True
+assert is_stop_valid("cassini", "2018-01-01") is False
+
+

Now we build a management class for wrapping the Perl script available at below’s URL for accessing subsets of these datasets.

+

First, the basic URLs we will use:

+

The Perl script subsetds.pl (the name at the end of the BASE_URL) requires as input:

+
    +
  • the dataset name
  • +
  • start and stop of the time interval
  • +
  • a constant named “Subset” to identify the action for this Perl script
  • +
+

We can assemble these parameters into a payload dictionary for the requests.get call and we manage different potential actions on the zipfile with a Subsetter class, that only requires the mission identifier, start and stop as parameters.

+
/home/runner/micromamba/envs/my-env/lib/python3.11/site-packages/fastcore/docscrape.py:225: UserWarning: Unknown section Attributes
+  else: warn(msg)
+
+

source

+
+
+

Subsetter

+
+
 Subsetter (mission:str, start:str, stop=None, save_location=None)
+
+

Class to manage retrieving subset SPICE kernel lists

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
missionstrmission shorthand in datasets dataframe
startstrstart time in either ISO or yyyy-jjj format
stopNoneTypeNonestop time in either ISO or yyyy-jjj format
save_locationNoneTypeNoneoverwrite default storing in planetarpy archive
+
+

source

+
+
+

download_one_url

+
+
 download_one_url (url, local_path, overwrite:bool=False)
+
+
+
subset = Subsetter("cassini", "2014-270")
+
+
+
subset.kernel_names
+
+
['ck/14001_15001pa_gapfill_v14.bc',
+ 'ck/14212_14279py_as_flown.bc',
+ 'ck/14268_14273ra.bc',
+ 'ck/cas_cda_20150318.bc',
+ 'ck/cas_lemms_05109_20001_v2.bc',
+ 'fk/cas_dyn_v03.tf',
+ 'fk/cas_mimi_v202.tf',
+ 'fk/cas_rocks_v18.tf',
+ 'fk/cas_v41.tf',
+ 'ik/cas_caps_v03.ti',
+ 'ik/cas_cda_v01.ti',
+ 'ik/cas_cirs_v09.ti',
+ 'ik/cas_inms_v02.ti',
+ 'ik/cas_iss_v10.ti',
+ 'ik/cas_mag_v01.ti',
+ 'ik/cas_mimi_v11.ti',
+ 'ik/cas_radar_v11.ti',
+ 'ik/cas_rpws_v01.ti',
+ 'ik/cas_rss_v03.ti',
+ 'ik/cas_sru_v02.ti',
+ 'ik/cas_uvis_v06.ti',
+ 'ik/cas_vims_v06.ti',
+ 'lsk/naif0012.tls',
+ 'pck/pck00010.tpc',
+ 'sclk/cas00172.tsc',
+ 'spk/140809BP_IRRE_00256_25017.bsp',
+ 'spk/150122R_SCPSE_14251_14283.bsp',
+ 'spk/180927AP_RE_90165_18018.bsp']
+
+
+
+
# this should fail:
+def _failing():
+    Subsetter("cassini", "2019-01-01")
+
+
+test_fail(_failing, contains="start/stop")
+
+
+
subset = Subsetter("cassini", "2011-02-13", "2011-02-14")
+
+
+
subset.urls_file
+
+
'urls_cosp_1000_110213_110214.txt'
+
+
+
+
subset.metakernel_file
+
+
'cas_2011_v17_110213_110214.tm'
+
+
+
+

source

+
+
+

Subsetter.kernel_names

+
+
 Subsetter.kernel_names ()
+
+

Return list of names of kernels for the given time range.

+
+
subset.kernel_names
+
+
['ck/11001_12001pa_gapfill_v14.bc',
+ 'ck/11017_11066py_as_flown.bc',
+ 'ck/11044_11049ra.bc',
+ 'ck/cas_cda_20120517.bc',
+ 'ck/cas_lemms_05109_20001_v2.bc',
+ 'fk/cas_dyn_v03.tf',
+ 'fk/cas_mimi_v202.tf',
+ 'fk/cas_rocks_v18.tf',
+ 'fk/cas_v41.tf',
+ 'ik/cas_caps_v03.ti',
+ 'ik/cas_cda_v01.ti',
+ 'ik/cas_cirs_v09.ti',
+ 'ik/cas_inms_v02.ti',
+ 'ik/cas_iss_v10.ti',
+ 'ik/cas_mag_v01.ti',
+ 'ik/cas_mimi_v11.ti',
+ 'ik/cas_radar_v11.ti',
+ 'ik/cas_rpws_v01.ti',
+ 'ik/cas_rss_v03.ti',
+ 'ik/cas_sru_v02.ti',
+ 'ik/cas_uvis_v06.ti',
+ 'ik/cas_vims_v06.ti',
+ 'lsk/naif0012.tls',
+ 'pck/pck00010.tpc',
+ 'sclk/cas00172.tsc',
+ 'spk/110504R_SCPSE_11041_11093.bsp',
+ 'spk/140809BP_IRRE_00256_25017.bsp',
+ 'spk/180927AP_RE_90165_18018.bsp']
+
+
+
+
subset.kernel_urls
+
+
['https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/11001_12001pa_gapfill_v14.bc',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/11017_11066py_as_flown.bc',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/11044_11049ra.bc',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/cas_cda_20120517.bc',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/cas_lemms_05109_20001_v2.bc',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/fk/cas_dyn_v03.tf',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/fk/cas_mimi_v202.tf',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/fk/cas_rocks_v18.tf',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/fk/cas_v41.tf',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_caps_v03.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_cda_v01.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_cirs_v09.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_inms_v02.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_iss_v10.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_mag_v01.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_mimi_v11.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_radar_v11.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_rpws_v01.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_rss_v03.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_sru_v02.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_uvis_v06.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_vims_v06.ti',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/lsk/naif0012.tls',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/pck/pck00010.tpc',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/sclk/cas00172.tsc',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/spk/110504R_SCPSE_11041_11093.bsp',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/spk/140809BP_IRRE_00256_25017.bsp',
+ 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/spk/180927AP_RE_90165_18018.bsp']
+
+
+
+

source

+
+
+

Subsetter.get_local_path

+
+
 Subsetter.get_local_path (url)
+
+

Calculate local storage path from Kernel URL, using save_location if given.

+

If self.save_location is None, the planetarypy archive is being used.

+ +++++ + + + + + + + + + + + + + + + + + + + +
TypeDetails
urlkernel url to determine local storage path
ReturnsPathfull local path where kernel in URL will be stored
+
+
subset.get_local_path(subset.kernel_urls[0])
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/cassini/ck/11001_12001pa_gapfill_v14.bc')
+
+
+
+
subset.save_location = Path(".")
+
+
+
subset.get_local_path(subset.kernel_urls[0])
+
+
Path('ck/11001_12001pa_gapfill_v14.bc')
+
+
+
+

source

+
+
+

Subsetter.download_kernels

+
+
 Subsetter.download_kernels (overwrite:bool=False,
+                             non_blocking:bool=False, quiet:bool=False)
+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
overwriteboolFalseswitch to control if kernels should be downloaded over existing ones
non_blockingboolFalse
quietboolFalse
+
+
# reset save_location to prevent additional download
+subset.save_location = None
+
+
+
subset.download_kernels()
+
+ +
+
+
ck 11001_12001pa_gapfill_v14.bc locally available.
+ck 11017_11066py_as_flown.bc locally available.
+ck 11044_11049ra.bc locally available.
+ck cas_cda_20120517.bc locally available.
+ck cas_lemms_05109_20001_v2.bc locally available.
+fk cas_dyn_v03.tf locally available.
+fk cas_mimi_v202.tf locally available.
+fk cas_rocks_v18.tf locally available.
+fk cas_v41.tf locally available.
+ik cas_caps_v03.ti locally available.
+ik cas_cda_v01.ti locally available.
+ik cas_cirs_v09.ti locally available.
+ik cas_inms_v02.ti locally available.
+ik cas_iss_v10.ti locally available.
+ik cas_mag_v01.ti locally available.
+ik cas_mimi_v11.ti locally available.
+ik cas_radar_v11.ti locally available.
+ik cas_rpws_v01.ti locally available.
+ik cas_rss_v03.ti locally available.
+ik cas_sru_v02.ti locally available.
+ik cas_uvis_v06.ti locally available.
+ik cas_vims_v06.ti locally available.
+lsk naif0012.tls locally available.
+pck pck00010.tpc locally available.
+sclk cas00172.tsc locally available.
+spk 110504R_SCPSE_11041_11093.bsp locally available.
+spk 140809BP_IRRE_00256_25017.bsp locally available.
+spk 180927AP_RE_90165_18018.bsp locally available.
+
+
+
+
subset.download_kernels(non_blocking=True)
+
+ +
+
+
ck 11001_12001pa_gapfill_v14.bc locally available.
+ck 11017_11066py_as_flown.bc locally available.
+ck 11044_11049ra.bc locally available.
+ck cas_cda_20120517.bc locally available.
+ck cas_lemms_05109_20001_v2.bc locally available.
+fk cas_dyn_v03.tf locally available.
+fk cas_mimi_v202.tf locally available.
+fk cas_rocks_v18.tf locally available.
+fk cas_v41.tf locally available.
+ik cas_caps_v03.ti locally available.
+ik cas_cda_v01.ti locally available.
+ik cas_cirs_v09.ti locally available.
+ik cas_inms_v02.ti locally available.
+ik cas_iss_v10.ti locally available.
+ik cas_mag_v01.ti locally available.
+ik cas_mimi_v11.ti locally available.
+ik cas_radar_v11.ti locally available.
+ik cas_rpws_v01.ti locally available.
+ik cas_rss_v03.ti locally available.
+ik cas_sru_v02.ti locally available.
+ik cas_uvis_v06.ti locally available.
+ik cas_vims_v06.ti locally available.
+lsk naif0012.tls locally available.
+pck pck00010.tpc locally available.
+sclk cas00172.tsc locally available.
+spk 110504R_SCPSE_11041_11093.bsp locally available.
+spk 140809BP_IRRE_00256_25017.bsp locally available.
+spk 180927AP_RE_90165_18018.bsp locally available.
+
+
+
[]
+
+
+
+

source

+
+
+

Subsetter.get_metakernel

+
+
 Subsetter.get_metakernel ()
+
+

Get metakernel file from NAIF and adapt path to match local storage.

+

Use save_location if given, otherwise planetarypy archive.

+
+
mkpath = subset.get_metakernel()
+mkpath
+
+
Path('/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/cassini/cas_2011_v17_110213_110214.tm')
+
+
+
+
!cat {mkpath}
+
+
KPL/MK
+
+   This meta-kernel lists a subset of kernels from the meta-kernel
+   cas_2011_v17.tm provided in the CO-S/J/E/V-SPICE-6-V1.0 SPICE PDS3 archive,
+   covering the whole or a part of the customer requested time period
+   from 2011-02-13T00:00:00.000 to 2011-02-14T00:00:00.000.
+
+   The documentation describing these kernels can be found in the
+   complete CO-S/J/E/V-SPICE-6-V1.0 SPICE PDS3 archive available at this URL
+
+   https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000
+
+   To use this meta-kernel users may need to modify the value of the
+   PATH_VALUES keyword to point to the actual location of the archive's
+   ``data'' directory on their system. Replacing ``/'' with ``\''
+   and converting line terminators to the format native to the user's
+   system may also be required if this meta-kernel is to be used on a
+   non-UNIX workstation.
+
+   This meta-kernel was created by the NAIF node's SPICE PDS archive
+   subsetting service version 2.1 on Mon Jun 19 08:13:34 PDT 2023.
+
+ 
+   \begindata
+ 
+      PATH_VALUES     = (
+                         '/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/cassini'
+                        )
+ 
+      PATH_SYMBOLS    = (
+                         'KERNELS'
+                        )
+ 
+      KERNELS_TO_LOAD = (
+                         '$KERNELS/lsk/naif0012.tls'
+                         '$KERNELS/pck/pck00010.tpc'
+                         '$KERNELS/fk/cas_rocks_v18.tf'
+                         '$KERNELS/fk/cas_mimi_v202.tf'
+                         '$KERNELS/fk/cas_dyn_v03.tf'
+                         '$KERNELS/fk/cas_v41.tf'
+                         '$KERNELS/ik/cas_caps_v03.ti'
+                         '$KERNELS/ik/cas_cda_v01.ti'
+                         '$KERNELS/ik/cas_cirs_v09.ti'
+                         '$KERNELS/ik/cas_inms_v02.ti'
+                         '$KERNELS/ik/cas_iss_v10.ti'
+                         '$KERNELS/ik/cas_mag_v01.ti'
+                         '$KERNELS/ik/cas_mimi_v11.ti'
+                         '$KERNELS/ik/cas_radar_v11.ti'
+                         '$KERNELS/ik/cas_rpws_v01.ti'
+                         '$KERNELS/ik/cas_rss_v03.ti'
+                         '$KERNELS/ik/cas_sru_v02.ti'
+                         '$KERNELS/ik/cas_uvis_v06.ti'
+                         '$KERNELS/ik/cas_vims_v06.ti'
+                         '$KERNELS/sclk/cas00172.tsc'
+                         '$KERNELS/spk/180927AP_RE_90165_18018.bsp'
+                         '$KERNELS/spk/140809BP_IRRE_00256_25017.bsp'
+                         '$KERNELS/spk/110504R_SCPSE_11041_11093.bsp'
+                         '$KERNELS/ck/11001_12001pa_gapfill_v14.bc'
+                         '$KERNELS/ck/11017_11066py_as_flown.bc'
+                         '$KERNELS/ck/11044_11049ra.bc'
+                         '$KERNELS/ck/cas_cda_20120517.bc'
+                         '$KERNELS/ck/cas_lemms_05109_20001_v2.bc'
+                        )
+ 
+   \begintext
+ 
+
+
+
+

Loading the metakernel works! :

+
+
spice.furnsh(str(mkpath))
+
+

Or, with given save_location:

+
+
subset.save_location = Path(".")
+mkpath = subset.get_metakernel()
+mkpath
+
+
Path('cas_2011_v17_110213_110214.tm')
+
+
+

The metakernel is correctly adapted, however for these tests, I didn’t download the kernels again

+
+
!cat {mkpath}
+
+
KPL/MK
+
+   This meta-kernel lists a subset of kernels from the meta-kernel
+   cas_2011_v17.tm provided in the CO-S/J/E/V-SPICE-6-V1.0 SPICE PDS3 archive,
+   covering the whole or a part of the customer requested time period
+   from 2011-02-13T00:00:00.000 to 2011-02-14T00:00:00.000.
+
+   The documentation describing these kernels can be found in the
+   complete CO-S/J/E/V-SPICE-6-V1.0 SPICE PDS3 archive available at this URL
+
+   https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000
+
+   To use this meta-kernel users may need to modify the value of the
+   PATH_VALUES keyword to point to the actual location of the archive's
+   ``data'' directory on their system. Replacing ``/'' with ``\''
+   and converting line terminators to the format native to the user's
+   system may also be required if this meta-kernel is to be used on a
+   non-UNIX workstation.
+
+   This meta-kernel was created by the NAIF node's SPICE PDS archive
+   subsetting service version 2.1 on Mon Jun 19 08:13:34 PDT 2023.
+
+ 
+   \begindata
+ 
+      PATH_VALUES     = (
+                         '.'
+                        )
+ 
+      PATH_SYMBOLS    = (
+                         'KERNELS'
+                        )
+ 
+      KERNELS_TO_LOAD = (
+                         '$KERNELS/lsk/naif0012.tls'
+                         '$KERNELS/pck/pck00010.tpc'
+                         '$KERNELS/fk/cas_rocks_v18.tf'
+                         '$KERNELS/fk/cas_mimi_v202.tf'
+                         '$KERNELS/fk/cas_dyn_v03.tf'
+                         '$KERNELS/fk/cas_v41.tf'
+                         '$KERNELS/ik/cas_caps_v03.ti'
+                         '$KERNELS/ik/cas_cda_v01.ti'
+                         '$KERNELS/ik/cas_cirs_v09.ti'
+                         '$KERNELS/ik/cas_inms_v02.ti'
+                         '$KERNELS/ik/cas_iss_v10.ti'
+                         '$KERNELS/ik/cas_mag_v01.ti'
+                         '$KERNELS/ik/cas_mimi_v11.ti'
+                         '$KERNELS/ik/cas_radar_v11.ti'
+                         '$KERNELS/ik/cas_rpws_v01.ti'
+                         '$KERNELS/ik/cas_rss_v03.ti'
+                         '$KERNELS/ik/cas_sru_v02.ti'
+                         '$KERNELS/ik/cas_uvis_v06.ti'
+                         '$KERNELS/ik/cas_vims_v06.ti'
+                         '$KERNELS/sclk/cas00172.tsc'
+                         '$KERNELS/spk/180927AP_RE_90165_18018.bsp'
+                         '$KERNELS/spk/140809BP_IRRE_00256_25017.bsp'
+                         '$KERNELS/spk/110504R_SCPSE_11041_11093.bsp'
+                         '$KERNELS/ck/11001_12001pa_gapfill_v14.bc'
+                         '$KERNELS/ck/11017_11066py_as_flown.bc'
+                         '$KERNELS/ck/11044_11049ra.bc'
+                         '$KERNELS/ck/cas_cda_20120517.bc'
+                         '$KERNELS/ck/cas_lemms_05109_20001_v2.bc'
+                        )
+ 
+   \begintext
+ 
+
+
+
+
+
+
+

User functions

+
+

source

+
+

get_metakernel_and_files

+
+
 get_metakernel_and_files (mission:str, start:str, stop:str,
+                           save_location:str=None, quiet:bool=False)
+
+

For a given mission and start/stop times, download the kernels and get metakernel path

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
missionstrmission shorthand from datasets dataframe
startstrstart time as iso-string, or yyyy-jjj
stopstrstop time as iso-string or yyyy-jjj
save_locationstrNoneoverride storage into planetarypy archive
quietboolFalsesuppress kernel-wise feedback
ReturnsPathpathlib.Path to metakernel file with corrected data path.
+
+
mkpath = get_metakernel_and_files("cassini", "2011-02-13", "2011-02-14")
+mkpath
+
+
/Users/maye/mambaforge/envs/py39/lib/python3.9/site-packages/distributed/node.py:182: UserWarning: Port 8787 is already in use.
+Perhaps you already have a cluster running?
+Hosting the HTTP server on port 57624 instead
+  warnings.warn(
+
+
+ +
+
+
ck 11001_12001pa_gapfill_v14.bc locally available.
+ck 11017_11066py_as_flown.bc locally available.
+ck 11044_11049ra.bc locally available.
+ck cas_cda_20120517.bc locally available.
+ck cas_lemms_05109_20001_v2.bc locally available.
+fk cas_dyn_v03.tf locally available.
+fk cas_mimi_v202.tf locally available.
+fk cas_rocks_v18.tf locally available.
+fk cas_v41.tf locally available.
+ik cas_caps_v03.ti locally available.
+ik cas_cda_v01.ti locally available.
+ik cas_cirs_v09.ti locally available.
+ik cas_inms_v02.ti locally available.
+ik cas_iss_v10.ti locally available.
+ik cas_mag_v01.ti locally available.
+ik cas_mimi_v11.ti locally available.
+ik cas_radar_v11.ti locally available.
+ik cas_rpws_v01.ti locally available.
+ik cas_rss_v03.ti locally available.
+ik cas_sru_v02.ti locally available.
+ik cas_uvis_v06.ti locally available.
+ik cas_vims_v06.ti locally available.
+lsk naif0012.tls locally available.
+pck pck00010.tpc locally available.
+sclk cas00172.tsc locally available.
+spk 110504R_SCPSE_11041_11093.bsp locally available.
+spk 140809BP_IRRE_00256_25017.bsp locally available.
+spk 180927AP_RE_90165_18018.bsp locally available.
+
+
+
Path('/Users/maye/planetarypy_data/spice_kernels/cassini/cas_2011_v17_110213_110214.tm')
+
+
+
+

source

+
+
+

list_kernels_for_day

+
+
 list_kernels_for_day (mission:str, start:str, stop:str='')
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
missionstrmission shorthand from datasets dataframe
startstrstart time as iso-string, or yyyy-jjj
stopstrstop time as iso-string or yyyy-jjj
Returnslistlist of kernel names
+
+
list_kernels_for_day("mro", "2015-02-13")
+
+
['ck/mro_crm_psp_150201_150228.bc',
+ 'ck/mro_hga_psp_150210_150216_v2.bc',
+ 'ck/mro_mcs_psp_150201_150228.bc',
+ 'ck/mro_sa_psp_150210_150216_v2.bc',
+ 'ck/mro_sc_psp_150210_150216_v2.bc',
+ 'fk/mro_v16.tf',
+ 'ik/mro_crism_v10.ti',
+ 'ik/mro_ctx_v11.ti',
+ 'ik/mro_hirise_v12.ti',
+ 'ik/mro_marci_v10.ti',
+ 'ik/mro_mcs_v10.ti',
+ 'ik/mro_onc_v10.ti',
+ 'lsk/naif0012.tls',
+ 'pck/pck00008.tpc',
+ 'sclk/mro_sclkscet_00095_65536.tsc',
+ 'spk/de421.bsp',
+ 'spk/mar097.bsp',
+ 'spk/mro_psp34.bsp',
+ 'spk/mro_psp34_ssd_mro95a.bsp',
+ 'spk/mro_struct_v10.bsp']
+
+
+
+
# this always takes much longer than other requests!
+list_kernels_for_day("maven", "2017-01-01")
+
+
['ck/mvn_app_rel_161226_170101_v01.bc',
+ 'ck/mvn_app_rel_170102_170108_v01.bc',
+ 'ck/mvn_iuvs_rem_170101_170331_v03.bc',
+ 'ck/mvn_sc_rel_161226_170101_v01.bc',
+ 'ck/mvn_sc_rel_170102_170108_v02.bc',
+ 'ck/mvn_swea_nom_131118_300101_v02.bc',
+ 'fk/maven_v09.tf',
+ 'ik/maven_ant_v10.ti',
+ 'ik/maven_euv_v10.ti',
+ 'ik/maven_iuvs_v11.ti',
+ 'ik/maven_ngims_v10.ti',
+ 'ik/maven_sep_v12.ti',
+ 'ik/maven_static_v11.ti',
+ 'ik/maven_swea_v11.ti',
+ 'ik/maven_swia_v10.ti',
+ 'lsk/naif0012.tls',
+ 'pck/pck00010.tpc',
+ 'sclk/mvn_sclkscet_00072.tsc',
+ 'spk/de430s.bsp',
+ 'spk/mar097s.bsp',
+ 'spk/maven_orb_rec_170101_170401_v1.bsp',
+ 'spk/maven_struct_v01.bsp']
+
+
+
+
# this always takes much longer than other requests!
+list_kernels_for_day("orex", "2018-11-30")
+
+
['ck/orx_sa_rel_181126_181202_v01.bc',
+ 'ck/orx_sc_rel_181126_181202_v01.bc',
+ 'ck/orx_struct_mapcam_v01.bc',
+ 'ck/orx_struct_polycam_v01.bc',
+ 'fk/orx_shape_v03.tf',
+ 'fk/orx_v14.tf',
+ 'ik/orx_lidar_v00.ti',
+ 'ik/orx_navcam_v02.ti',
+ 'ik/orx_ocams_v07.ti',
+ 'ik/orx_ola_v01.ti',
+ 'ik/orx_otes_v00.ti',
+ 'ik/orx_ovirs_v00.ti',
+ 'ik/orx_rexis_v01.ti',
+ 'ik/orx_stowcam_v00.ti',
+ 'ik/orx_struct_v00.ti',
+ 'lsk/naif0012.tls',
+ 'pck/bennu_v17.tpc',
+ 'pck/pck00010.tpc',
+ 'sclk/orx_sclkscet_00074.tsc',
+ 'spk/bennu_refdrmc_v1.bsp',
+ 'spk/de424.bsp',
+ 'spk/orx_180301_181201_180921_od044_v1.bsp',
+ 'spk/orx_180801_190302_181218_od077_v1.bsp',
+ 'spk/orx_181203_190302_190104_od085_v1.bsp',
+ 'spk/orx_struct_v04.bsp']
+
+
+
+
def _test_mission_kernels_available(mission):
+    print("Doing", mission)
+    start = datasets.at[mission, "Start Time"]
+    end = datasets.at[mission, "Stop Time"]
+    half = Time(start) + (Time(end) - Time(start)) / 2
+    print("Half time:", half)
+    try:
+        found = list_kernels_for_day(mission, half)
+    except IndexError:
+        print("Problem with", mission)
+    else:
+        print(f"Found {len(found)} kernels for {mission}")
+
+for mission in datasets.index:
+    _test_mission_kernels_available(mission)
+
+
Doing bc
+Half time: 2020-11-25 00:00:00.000
+Found 41 kernels for bc
+Doing cassini
+Half time: 2007-09-30 12:00:01.000
+Found 32 kernels for cassini
+Doing clementine
+Half time: 1994-03-17 12:00:00.000
+Found 19 kernels for clementine
+Doing dart
+Half time: 2035-12-06 00:00:00.000
+Found 14 kernels for dart
+Doing dawn
+Half time: 2013-04-14 00:00:00.000
+Found 21 kernels for dawn
+Doing di
+Half time: 2005-04-26 12:00:00.000
+Found 16 kernels for di
+Doing ds1
+Half time: 2000-05-21 11:59:59.500
+Found 11 kernels for ds1
+Doing epoxi
+Half time: 2008-05-27 00:00:00.000
+Found 12 kernels for epoxi
+Doing em16
+Half time: 2019-08-07 23:59:59.500
+Found 27 kernels for em16
+Doing grail
+Half time: 2012-04-29 00:00:00.500
+Found 20 kernels for grail
+Doing hayabusa
+Half time: 2005-10-15 12:00:00.000
+Found 15 kernels for hayabusa
+Doing insight
+Half time: 2020-08-24 12:00:00.000
+Found 21 kernels for insight
+Doing juno
+Half time: 2017-02-08 23:59:58.500
+Found 25 kernels for juno
+Doing ladee
+Half time: 2031-11-04 11:59:59.000
+Found 12 kernels for ladee
+Doing lro
+Half time: 2016-04-30 23:59:59.500
+Found 24 kernels for lro
+Doing maven
+Half time: 2018-07-25 11:59:59.000
+Found 20 kernels for maven
+Doing opportunity
+Half time: 2010-12-23 00:00:00.500
+Found 23 kernels for opportunity
+Doing spirit
+Half time: 2006-11-20 12:00:00.000
+Found 24 kernels for spirit
+Doing messenger
+Half time: 2009-12-15 23:59:59.500
+Found 18 kernels for messenger
+Doing mars2020
+Half time: 2021-10-13 12:00:00.000
+Found 17 kernels for mars2020
+Doing mex
+Half time: 2013-03-01 11:59:59.500
+Found 39 kernels for mex
+Doing mgs
+Half time: 2001-11-03 23:59:59.500
+Found 20 kernels for mgs
+Doing ody
+Half time: 2012-01-03 12:00:00.500
+Found 14 kernels for ody
+Doing mro
+Half time: 2014-06-06 11:59:59.500
+Found 20 kernels for mro
+Doing msl
+Half time: 2017-05-16 23:59:58.500
+Found 50 kernels for msl
+Doing near
+Half time: 1998-10-14 12:00:00.000
+Found 15 kernels for near
+Doing nh
+Half time: 2013-01-08 12:00:00.000
+Found 28 kernels for nh
+Doing orex
+Half time: 2018-11-30 23:59:59.500
+
+
+
  warnings.warn('ERFA function "{}" yielded {}'.format(func_name, wmsg),
+  warnings.warn('ERFA function "{}" yielded {}'.format(func_name, wmsg),
+  warnings.warn('ERFA function "{}" yielded {}'.format(func_name, wmsg),
+  warnings.warn('ERFA function "{}" yielded {}'.format(func_name, wmsg),
+
+
+
OSError: SPICE Server request returned status code: {r.status_code}
+
+
+
+

NOTE: Any ErfaWarnings above are caused by the LADEE mission using a kernel up to 2050, and the astropy.Time module warns about potential precicision issues regarding unknown leapseconds that will be put in in the future.

+
+
+
+

Generic kernel management

+

There are a few generic kernels that are required for basic illumination calculations as supported by this package.

+
+

source

+
+
+

download_generic_kernels

+
+
 download_generic_kernels (overwrite=False)
+
+

Download all kernels as required by generic_kernel_list.

+
+
download_generic_kernels()
+
+
+

source

+
+
+

load_generic_kernels

+
+
 load_generic_kernels ()
+
+

Load all kernels in generic_kernels list.

+

Loads pure planetary bodies meta-kernel without spacecraft data.

+

Downloads any missing generic kernels.

+
+
spice.kclear()
+
+
+
load_generic_kernels()
+
+
+

source

+
+
+

show_loaded_kernels

+
+
 show_loaded_kernels ()
+
+

Print overview of loaded kernels.

+
+
show_loaded_kernels()
+
+
+
from nbdev import nbdev_export
+
+nbdev_export()
+
+ + +
+
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/api/utils.html b/api/utils.html new file mode 100644 index 0000000..3298a6d --- /dev/null +++ b/api/utils.html @@ -0,0 +1,1171 @@ + + + + + + + + + + +planetarypy - Utils + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

Utils

+
+ +
+
+ General utilities. Should probably split up into utils.time and utils.download +
+
+ + +
+ + + + +
+ + +
+ + +
+

Time format strings

+

First, we define the different format strings these utils convert from and to.

+

An identifier with xxx_dt_format_xxx in its name signifies a full datetime format as compared to dates only.

+
+

NASA date to datetime and ISO

+

What we call NASA data, is the often used YYYY-JJJ based format in the Planetary Data System identifying dates via the running number of the day in the year, e.g. “2010-240”.

+
+

source

+
+
+

nasa_time_to_datetime

+
+
 nasa_time_to_datetime (inputstr)
+
+

User function to convert all kinds of NASA PDS datestrings with day_of_year into datetimes.

+ +++++ + + + + + + + + + + + + + + + + + + + +
TypeDetails
inputstrinputstr of format YYYY-jjj, YYYY-jjjTHH:MM:SS or YYYY-jjjTHH:MM:SS.ffffff
Returnsdatetime
+

Example dates and times to test:

+
+
nasa_date = "2010-110"
+iso_date = "2010-4-20"
+nasa_datetime = "2010-110T10:12:14"
+nasa_datetime_with_ms = nasa_datetime + ".123000"
+iso_datetime = "2010-04-20T10:12:14"
+iso_datetime_with_ms = iso_datetime + ".123000"
+nasa_times = [nasa_date, nasa_datetime, nasa_datetime_with_ms]
+iso_times = [iso_date, iso_datetime, iso_datetime_with_ms]
+
+
+
assert nasa_time_to_datetime(nasa_date) == dt.datetime(2010, 4, 20, 0, 0)
+
+
+
assert nasa_time_to_datetime(nasa_datetime) == dt.datetime(2010, 4, 20, 10, 12, 14)
+
+
+
assert nasa_time_to_datetime(nasa_datetime_with_ms) == dt.datetime(2010, 4, 20, 10, 12, 14, 123000)
+
+
+

source

+
+
+

nasa_time_to_iso

+
+
 nasa_time_to_iso (inputstr:str, with_hours:bool=False)
+
+

Convert the day-number based NASA datetime format to ISO

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
inputstrstr
with_hoursboolFalseSwitch if return is wanted with hours (i.e. isoformat)
ReturnsstrDatestring in ISO-format.
+

Conversions to ISO format, but not providing hours if they are not in input:

+
+
for t in nasa_times:
+    print("Input:", t)
+    print(nasa_time_to_iso(t))
+
+
Input: 2010-110
+2010-04-20
+Input: 2010-110T10:12:14
+2010-04-20T10:12:14
+Input: 2010-110T10:12:14.123000
+2010-04-20T10:12:14.123000
+
+
+

If hours are wanted in the isostring, use with_hours=True:

+
+
for t in nasa_times:
+    print("Input:", t)
+    print(nasa_time_to_iso(t, with_hours=True))
+
+
Input: 2010-110
+2010-04-20T00:00:00
+Input: 2010-110T10:12:14
+2010-04-20T10:12:14
+Input: 2010-110T10:12:14.123000
+2010-04-20T10:12:14.123000
+
+
+
+
assert nasa_time_to_iso(nasa_date, with_hours=True) == "2010-04-20T00:00:00"
+assert nasa_time_to_iso(nasa_date) == "2010-04-20"
+
+
+
+

ISO date to “NASA-format”

+

Again, with NASA-format, we mean the ofen used (in PDS and mission files) YYYY-JJJ format, e.g. “2010-240”.

+
+

source

+
+
+

iso_to_nasa_time

+
+
 iso_to_nasa_time (inputstr:str)
+
+

Convert iso date to day-number based NASA date.

+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
inputstrstrDate string of the form Y-m-d
ReturnsstrDatestring in NASA standard yyyy-jjj
+
+

source

+
+
+

iso_to_nasa_datetime

+
+
 iso_to_nasa_datetime (dtimestr:str)
+
+

Convert iso datetime to day-number based NASA datetime.

+ + + + + + + + + + + + + + + +
TypeDetails
dtimestrstrDatetime string of the form yyyy-mm-ddTHH-MM-SS
+
+
for t in iso_times:
+    print("Input:", t)
+    print(iso_to_nasa_time(t))
+
+
Input: 2010-4-20
+2010-110
+Input: 2010-04-20T10:12:14
+2010-110T10:12:14
+Input: 2010-04-20T10:12:14.123000
+2010-110T10:12:14.123000
+
+
+
+
assert iso_to_nasa_time(iso_date) == nasa_date
+
+
+
assert nasa_time_to_iso(nasa_datetime) == iso_datetime
+assert nasa_time_to_iso(nasa_datetime_with_ms) == iso_datetime_with_ms
+
+
+
assert iso_to_nasa_time(iso_datetime) == nasa_datetime
+assert iso_to_nasa_time(iso_datetime_with_ms) == nasa_datetime_with_ms
+
+
+

source

+
+
+

replace_all_nasa_times

+
+
 replace_all_nasa_times (df:pandas.core.frame.DataFrame)
+
+

Find all NASA times in dataframe and replace with ISO.

+

Changes will be implemented on incoming dataframe!

+

This will be done for all columns with the word TIME in the column name.

+ + + + + + + + + + + + + + + +
TypeDetails
dfDataFrameDataFrame with NASA time columns
+
+
+
+

Network utils

+
+

source

+
+

have_internet

+
+
 have_internet ()
+
+

Fastest way to check for active internet connection.

+

From https://stackoverflow.com/a/29854274/680232

+
+

source

+
+
+

url_retrieve

+
+
 url_retrieve (url:str, outfile:str, chunk_size:int=4096, user:str=None,
+               passwd:str=None)
+
+

Improved urlretrieve with progressbar, timeout and chunker.

+

This downloader has built-in progress bar using tqdm and using the requests package it improves standard urllib behavior by adding time-out capability.

+

I tested different chunk_sizes and most of the time 128 was actually fastest, YMMV.

+

Inspired by https://stackoverflow.com/a/61575758/680232

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDefaultDetails
urlstrThe URL to download
outfilestrThe path where to store the downloaded file.
chunk_sizeint4096def chunk size for the request.iter_content call
userstrNoneif provided, create HTTPBasicAuth object
passwdstrNoneif provided, create HTTPBasicAuth object
+
+

source

+
+
+

check_url_exists

+
+
 check_url_exists (url)
+
+
+

source

+
+
+

get_remote_timestamp

+
+
 get_remote_timestamp (url:str)
+
+

Get the timestamp of a remote file.

+

Useful for checking if there’s an updated file available.

+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
urlstrURL to check timestamp for
Returnsdatetime
+
+

source

+
+
+

parse_http_date

+
+
 parse_http_date (text:str)
+
+

Parse date string retrieved via urllib.request.

+ +++++ + + + + + + + + + + + + + + + + + + + +
TypeDetails
textstrdatestring from urllib.request
Returnsdatetimedt.datetime object from given datetime string
+
+
have_internet()
+
+
True
+
+
+
+
+
+

Image processing helpers

+
+

source

+
+

file_variations

+
+
 file_variations (filename:Union[str,pathlib.Path], extensions:list)
+
+

Create a variation of file names.

+

Generate a list of variations on a filename by replacing the extension with the provided list.

+

Adapted from T. Olsens `file_variations of the pysis module for using pathlib.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDetails
filenameUnionThe original filename to use as a base.
extensionslist
Returnslistlist of Paths
+
+

source

+
+
+

get_gdal_center_coords

+
+
 get_gdal_center_coords (imgpath:Union[str,pathlib.Path])
+
+

Get center rows/cols pixel coordinate for GDAL-readable dataset.

+

Check CLI gdalinfo --formats to see all formats that GDAL can open.

+ + + + + + + + + + + + + + + + + + + + +
TypeDetails
imgpathUnionPath to raster image that is readable by GDLA
ReturnsTuplecenter row/col coordinates.
+
+

source

+
+
+

height_from_shadow

+
+
 height_from_shadow (shadow_in_pixels:float, sun_elev:float)
+
+

Calculate height of an object from its shadow length.

+

Note, that your image might have been binned. You need to correct shadow_in_pixels for that.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDetails
shadow_in_pixelsfloatMeasured length of shadow in pixels
sun_elevfloatAnge of sun over horizon in degrees
ReturnsfloatHeight [meter]
+
+
fname = "abc.txt"
+
+
+
extensions = ".cub .cal.cub .map.cal.cub".split()
+
+
+
file_variations(fname, extensions)
+
+
[Path('abc.cub'), Path('abc.cal.cub'), Path('abc.map.cal.cub')]
+
+
+
+
assert len(extensions) == len(file_variations(fname, extensions))
+
+
+
+
+

ISIS helpers

+
+

source

+
+

catch_isis_error

+
+
 catch_isis_error (func)
+
+

can be used as decorator for any ISIS function

+
+
+
+

Notebook tools

+
+

source

+
+

fix_nb_metadata_folder

+
+
 fix_nb_metadata_folder (folder)
+
+
+

source

+
+
+

fix_nb_metadata

+
+
 fix_nb_metadata (fpath)
+
+
+
from nbdev import nbdev_export
+
+nbdev_export()
+
+ + +
+
+ +
+ +
+ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..9afc041 --- /dev/null +++ b/index.html @@ -0,0 +1,1114 @@ + + + + + + + + + +planetarypy - PlanetaryPy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ +
+ + +
+ + + +
+ +
+
+

PlanetaryPy

+
+ + + +
+ + + + +
+ + +
+ + +
+

PlanetaryPy

+
+

Beta release: This will become (part of) the core package of the PlanetaryPy organisation.

+
+

Potential logo:image.png

+
+

Install

+
pip install planetarypy
+

This will pull in these other dependencies and their dependencies:

+

tomlkit pandas pvl numpy python-dateutil tqdm lxml yarl hirise-tools kalasiris

+
+
+

Suggested standard abbreviations:

+
    +
  • Inside these docs the package will be called PLPY for brevity.
  • +
  • A standard Python import could be: plp or plpy +
      +
    • because the last p in plp can be pronounced out, we consider these equivalent for human conversation and pronounce these “plippy”.
    • +
  • +
+
+
+

General scope

+

First and foremost this package should provide support in working with planetary science data.

+

With working we mean:

+
    +
  • locating
  • +
  • retrieving
  • +
  • reading
  • +
  • further processing
  • +
+

of data.

+
+

Locating

+

This library manages, via its PDS tools, multiple PDS3 index files per instrument that can be used for identifying data of interest. These index files are automatically downloaded and converted to the very performant (and cloud-ready) parquet file format. > Parquet is able to store advanced datatypes like nan-capable integer and full datetime objects, as opposed to HDF5.

+
+
+

Retrieving

+

The interface to getting data is via a path-retrieving function based on a PDS product-id. If that product-id is available locally, the path will be returned. If it is not, it will previously be downloaded, stored in a systematic fashion organized by mission and instrument, and then the local path will be returned.

+
+
+

Reading

+

For now, the library only returns the path to the object and the user needs to sort out the reading process. A recently funded NASA project Planetary Data Reader will be integrated here, so that basic reading into memory can be provided.

+

As such, we anticipate two classes of reading support: 1. basic reading into numpy and/or xarray 1. added reader functionality like basic plots and basic geospatial processing, as supported by interested parties

+

There will exist larger other packages that focus on working with a given instrument’s data, in which case that package could become an affiliated package with the planetarypy GitHub organization, if so desired.

+
+
+

Further processing

+

In the future, additional frequently used procedures will be added to this library, e.g. * frequently used GDAL/rasterio procedures * frequently used SPICE operations * like surface illumination on a given body

+
+
+
+

PDS tools

+

Look at the Apps docs to see what pds.apps exist for easily getting PDS indexes. The find_index app is specifically useful when you don’t know what index files exist.

+

So far, the following indexes are supported (but not necessarily all tested within PLPY):

+
    +
  • Cassini +
      +
    • ISS (all)
    • +
    • UVIS (all)
    • +
  • +
  • MRO +
      +
    • CTX EDR
    • +
    • HiRISE +
        +
      • EDR, RDR, DTM +
          +
        • EDR index has a bug (as delivered by the team, reported), where I need to activate an existing fix for it.
        • +
      • +
    • +
  • +
  • LRO +
      +
    • Diviner (DLRE) +
        +
      • EDR, RDR
      • +
    • +
    • LOLA +
        +
      • EDR, RDR
      • +
    • +
  • +
+
+

More indexes

+

More indexes of other instruments can be easily added by following the existing structure of what has been copied into your config at ~/.planetarypy_config.toml.

+

Please consider submitting a pull request for adding further PDS index files into the config file at its source: https://github.com/michaelaye/nbplanetary/blob/master/planetarypy/data/planetarypy_config.toml

+
+
+
+

Utils

+

Find something in Utils for working with NASA timestamps and a well working URL download function url_retrieve, among other stuff.

+
+
+

Experiment/Instrument Specific

+

So far, planetarypy supports CTX EDR and HiRISE RGB.NOMAP data. Look at the CTX and HiRISE pages for descriptions of classes for working with these data.

+
+
+

Bug reports

+

Please submit bug reports at https://github.com/michaelaye/nbplanetary/issues

+
+
+

How to use

+
+

Indexes

+

See PDS apps for more details.

+
+
from planetarypy.pds.apps import get_index
+
+
+
ctrindex = get_index("mro.ctx", "edr", refresh=False)
+ctrindex.sample(5, random_state=42)  # setting random_state to always get same files for docs
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDFILE_SPECIFICATION_NAMEORIGINAL_PRODUCT_IDPRODUCT_IDIMAGE_TIMEINSTRUMENT_IDINSTRUMENT_MODE_IDLINE_SAMPLESLINESSPATIAL_SUMMING...SUB_SOLAR_LATITUDESUB_SPACECRAFT_LONGITUDESUB_SPACECRAFT_LATITUDESOLAR_DISTANCESOLAR_LONGITUDELOCAL_TIMEIMAGE_SKEW_ANGLERATIONALE_DESCDATA_QUALITY_DESCORBIT_NUMBER
86101MROX_2757DATA/J07_047671_1256_XN_54S338W.IMG4A_04_10F0036A00J07_047671_1256_XN_54S338W2016-09-27 00:24:54.682CTXNIFL252881921...-19.41338.09-54.43207762612.4230.5815.4890.1Crater in Noachis TerraOK47671
54420MROX_1819DATA/D10_031170_1808_XN_00N221W.IMG4A_04_109C017D00D10_031170_1808_XN_00N221W2013-03-21 06:58:09.892CTXNIFL505671681...-24.39221.520.88209925149.5286.1514.4990.1Ride-along with HiRISEOK31170
71053MROX_2331DATA/F10_039530_1470_XI_33S203W.IMG4A_04_10C9000F00F10_039530_1470_XI_33S203W2015-01-01 16:20:01.840CTXITL5056522241...-25.3203.96-33.12207070298.2263.9315.290.4Terrain in Terra CimmeriaOK39530
51385MROX_1742DATA/D04_028919_2026_XN_22N327W.IMG4A_04_109002A800D04_028919_2026_XN_22N327W2012-09-26 21:17:00.483CTXNIFL505661441...0.67327.0622.78219814412.3178.4415.5390.1Ride-along with HiRISEOK28919
51923MROX_1757DATA/D05_029283_1524_XN_27S180W.IMG4A_04_1092020B00D05_029283_1524_XN_27S180W2012-10-25 05:44:21.786CTXNIFL505692161...-6.28178.36-27.56214830233.7194.7215.5790.1Ride-along with HiRISEOK29283
+ +

5 rows × 51 columns

+
+
+
+
+
hirise_rdr = get_index("mro.hirise", "rdr")
+hirise_rdr.sample(5, random_state=42)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VOLUME_IDFILE_NAME_SPECIFICATIONINSTRUMENT_HOST_IDINSTRUMENT_IDOBSERVATION_IDPRODUCT_IDPRODUCT_VERSION_IDTARGET_NAMEORBIT_NUMBERMISSION_PHASE_NAME...LINE_PROJECTION_OFFSETSAMPLE_PROJECTION_OFFSETCORNER1_LATITUDECORNER1_LONGITUDECORNER2_LATITUDECORNER2_LONGITUDECORNER3_LATITUDECORNER3_LONGITUDECORNER4_LATITUDECORNER4_LONGITUDE
144822MROHR_0001RDR/ESP/ORB_074100_074199/ESP_074107_1410/ESP_...MROHIRISEESP_074107_1410ESP_074107_1410_COLOR1MARS74107Extended Science Phase...-4568562.52009279.5-38.7446159.311-38.7465159.287-38.614159.269-38.6121159.293
22518MROHR_0001RDR/ESP/ORB_014000_014099/ESP_014080_1040/ESP_...MROHIRISEESP_014080_1040ESP_014080_1040_RED1MARS14080Extended Science Phase...-3193960.0-845180.0-76.0185165.215-76.0315164.858-75.6958164.658-75.6831165.005
86634MROHR_0001RDR/ESP/ORB_046300_046399/ESP_046395_1730/ESP_...MROHIRISEESP_046395_1730ESP_046395_1730_COLOR1MARS46395Extended Science Phase...-1584330.0-26573400.0-6.9957292.569-6.9979292.551-6.6838292.51-6.6815292.529
138163MROHR_0001RDR/ESP/ORB_069100_069199/ESP_069178_2345/ESP_...MROHIRISEESP_069178_2345ESP_069178_2345_RED1MARS69178Extended Science Phase...12762196.015708938.053.859876.759153.847476.60254.001376.567254.013776.7249
125490MROHR_0001RDR/ESP/ORB_063500_063599/ESP_063504_1995/ESP_...MROHIRISEESP_063504_1995ESP_063504_1995_COLOR1MARS63504Extended Science Phase...4638178.512794202.019.4523124.14919.45124.12819.5686124.11319.5709124.133
+ +

5 rows × 54 columns

+
+
+
+
+
+
+

Instrument tools

+
+

CTX

+
+
from planetarypy.ctx import CTX
+
+
+
pid = ctrindex.sample(random_state=42).squeeze().PRODUCT_ID
+pid
+
+
'J07_047671_1256_XN_54S338W'
+
+
+
+
ctx = CTX(pid)
+ctx
+
+
PRODUCT_ID: J07_047671_1256_XN_54S338W
+URL: https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_2757/data/J07_047671_1256_XN_54S338W.IMG
+source_path: /remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG
+Shape: (8192, 2528)
+
+
+
+
ctx.source_path
+
+
Path('/remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG')
+
+
+
+
ctx.download()
+
+
File exists. Use `overwrite=True` to download fresh.
+
+
+
+
+
+

Acknowledgements

+

The creation of this library was in part supported by:

+
    +
  • NASA Cassini UVIS mission
  • +
  • NASA SSW grant NNX15AH36G
  • +
  • NASA PDART grant 80NSSC20K0875
  • +
  • NASA SSW grant 80NSSC20K0748
  • +
  • German Space Agency (DLR Bonn), grant 50 OO 2204, on behalf of the German Federal Ministry for Economic Affairs and Climate Action.
  • +
  • This research has made use of the USGS Integrated Software for Imagers and Spectrometers (ISIS)(Laura et al. 2022).
  • +
+ + + +
+
+ +

References

+
+Laura, Jason, Alex Acosta, Travis Addair, Lauren Adoram-Kershner, James Alexander, Oleg Alexandrov, Stacey Alley, et al. 2022. “Integrated Software for Imagers and Spectrometers.” Zenodo. https://doi.org/10.5281/zenodo.7443567. +
+
+ +
+ + + + \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..1378433 --- /dev/null +++ b/robots.txt @@ -0,0 +1 @@ +Sitemap: https://michaelaye.github.io/planetarypy/sitemap.xml diff --git a/search.json b/search.json new file mode 100644 index 0000000..c921b14 --- /dev/null +++ b/search.json @@ -0,0 +1,429 @@ +[ + { + "objectID": "index.html", + "href": "index.html", + "title": "PlanetaryPy", + "section": "", + "text": "Beta release: This will become (part of) the core package of the PlanetaryPy organisation.\n\nPotential logo:\n\n\npip install planetarypy\nThis will pull in these other dependencies and their dependencies:\ntomlkit pandas pvl numpy python-dateutil tqdm lxml yarl hirise-tools kalasiris\n\n\n\n\nInside these docs the package will be called PLPY for brevity.\nA standard Python import could be: plp or plpy\n\nbecause the last p in plp can be pronounced out, we consider these equivalent for human conversation and pronounce these “plippy”.\n\n\n\n\n\nFirst and foremost this package should provide support in working with planetary science data.\nWith working we mean:\n\nlocating\nretrieving\nreading\nfurther processing\n\nof data.\n\n\nThis library manages, via its PDS tools, multiple PDS3 index files per instrument that can be used for identifying data of interest. These index files are automatically downloaded and converted to the very performant (and cloud-ready) parquet file format. > Parquet is able to store advanced datatypes like nan-capable integer and full datetime objects, as opposed to HDF5.\n\n\n\nThe interface to getting data is via a path-retrieving function based on a PDS product-id. If that product-id is available locally, the path will be returned. If it is not, it will previously be downloaded, stored in a systematic fashion organized by mission and instrument, and then the local path will be returned.\n\n\n\nFor now, the library only returns the path to the object and the user needs to sort out the reading process. A recently funded NASA project Planetary Data Reader will be integrated here, so that basic reading into memory can be provided.\nAs such, we anticipate two classes of reading support: 1. basic reading into numpy and/or xarray 1. added reader functionality like basic plots and basic geospatial processing, as supported by interested parties\nThere will exist larger other packages that focus on working with a given instrument’s data, in which case that package could become an affiliated package with the planetarypy GitHub organization, if so desired.\n\n\n\nIn the future, additional frequently used procedures will be added to this library, e.g. * frequently used GDAL/rasterio procedures * frequently used SPICE operations * like surface illumination on a given body\n\n\n\n\nLook at the Apps docs to see what pds.apps exist for easily getting PDS indexes. The find_index app is specifically useful when you don’t know what index files exist.\nSo far, the following indexes are supported (but not necessarily all tested within PLPY):\n\nCassini\n\nISS (all)\nUVIS (all)\n\nMRO\n\nCTX EDR\nHiRISE\n\nEDR, RDR, DTM\n\nEDR index has a bug (as delivered by the team, reported), where I need to activate an existing fix for it.\n\n\n\nLRO\n\nDiviner (DLRE)\n\nEDR, RDR\n\nLOLA\n\nEDR, RDR\n\n\n\n\n\nMore indexes of other instruments can be easily added by following the existing structure of what has been copied into your config at ~/.planetarypy_config.toml.\nPlease consider submitting a pull request for adding further PDS index files into the config file at its source: https://github.com/michaelaye/nbplanetary/blob/master/planetarypy/data/planetarypy_config.toml\n\n\n\n\nFind something in Utils for working with NASA timestamps and a well working URL download function url_retrieve, among other stuff.\n\n\n\nSo far, planetarypy supports CTX EDR and HiRISE RGB.NOMAP data. Look at the CTX and HiRISE pages for descriptions of classes for working with these data.\n\n\n\nPlease submit bug reports at https://github.com/michaelaye/nbplanetary/issues\n\n\n\n\n\nSee PDS apps for more details.\n\nfrom planetarypy.pds.apps import get_index\n\n\nctrindex = get_index(\"mro.ctx\", \"edr\", refresh=False)\nctrindex.sample(5, random_state=42) # setting random_state to always get same files for docs\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nORIGINAL_PRODUCT_ID\nPRODUCT_ID\nIMAGE_TIME\nINSTRUMENT_ID\nINSTRUMENT_MODE_ID\nLINE_SAMPLES\nLINES\nSPATIAL_SUMMING\n...\nSUB_SOLAR_LATITUDE\nSUB_SPACECRAFT_LONGITUDE\nSUB_SPACECRAFT_LATITUDE\nSOLAR_DISTANCE\nSOLAR_LONGITUDE\nLOCAL_TIME\nIMAGE_SKEW_ANGLE\nRATIONALE_DESC\nDATA_QUALITY_DESC\nORBIT_NUMBER\n\n\n\n\n86101\nMROX_2757\nDATA/J07_047671_1256_XN_54S338W.IMG\n4A_04_10F0036A00\nJ07_047671_1256_XN_54S338W\n2016-09-27 00:24:54.682\nCTX\nNIFL\n2528\n8192\n1\n...\n-19.41\n338.09\n-54.43\n207762612.4\n230.58\n15.48\n90.1\nCrater in Noachis Terra\nOK\n47671\n\n\n54420\nMROX_1819\nDATA/D10_031170_1808_XN_00N221W.IMG\n4A_04_109C017D00\nD10_031170_1808_XN_00N221W\n2013-03-21 06:58:09.892\nCTX\nNIFL\n5056\n7168\n1\n...\n-24.39\n221.52\n0.88\n209925149.5\n286.15\n14.49\n90.1\nRide-along with HiRISE\nOK\n31170\n\n\n71053\nMROX_2331\nDATA/F10_039530_1470_XI_33S203W.IMG\n4A_04_10C9000F00\nF10_039530_1470_XI_33S203W\n2015-01-01 16:20:01.840\nCTX\nITL\n5056\n52224\n1\n...\n-25.3\n203.96\n-33.12\n207070298.2\n263.93\n15.2\n90.4\nTerrain in Terra Cimmeria\nOK\n39530\n\n\n51385\nMROX_1742\nDATA/D04_028919_2026_XN_22N327W.IMG\n4A_04_109002A800\nD04_028919_2026_XN_22N327W\n2012-09-26 21:17:00.483\nCTX\nNIFL\n5056\n6144\n1\n...\n0.67\n327.06\n22.78\n219814412.3\n178.44\n15.53\n90.1\nRide-along with HiRISE\nOK\n28919\n\n\n51923\nMROX_1757\nDATA/D05_029283_1524_XN_27S180W.IMG\n4A_04_1092020B00\nD05_029283_1524_XN_27S180W\n2012-10-25 05:44:21.786\nCTX\nNIFL\n5056\n9216\n1\n...\n-6.28\n178.36\n-27.56\n214830233.7\n194.72\n15.57\n90.1\nRide-along with HiRISE\nOK\n29283\n\n\n\n\n5 rows × 51 columns\n\n\n\n\nhirise_rdr = get_index(\"mro.hirise\", \"rdr\")\nhirise_rdr.sample(5, random_state=42)\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_NAME_SPECIFICATION\nINSTRUMENT_HOST_ID\nINSTRUMENT_ID\nOBSERVATION_ID\nPRODUCT_ID\nPRODUCT_VERSION_ID\nTARGET_NAME\nORBIT_NUMBER\nMISSION_PHASE_NAME\n...\nLINE_PROJECTION_OFFSET\nSAMPLE_PROJECTION_OFFSET\nCORNER1_LATITUDE\nCORNER1_LONGITUDE\nCORNER2_LATITUDE\nCORNER2_LONGITUDE\nCORNER3_LATITUDE\nCORNER3_LONGITUDE\nCORNER4_LATITUDE\nCORNER4_LONGITUDE\n\n\n\n\n144822\nMROHR_0001\nRDR/ESP/ORB_074100_074199/ESP_074107_1410/ESP_...\nMRO\nHIRISE\nESP_074107_1410\nESP_074107_1410_COLOR\n1\nMARS\n74107\nExtended Science Phase\n...\n-4568562.5\n2009279.5\n-38.7446\n159.311\n-38.7465\n159.287\n-38.614\n159.269\n-38.6121\n159.293\n\n\n22518\nMROHR_0001\nRDR/ESP/ORB_014000_014099/ESP_014080_1040/ESP_...\nMRO\nHIRISE\nESP_014080_1040\nESP_014080_1040_RED\n1\nMARS\n14080\nExtended Science Phase\n...\n-3193960.0\n-845180.0\n-76.0185\n165.215\n-76.0315\n164.858\n-75.6958\n164.658\n-75.6831\n165.005\n\n\n86634\nMROHR_0001\nRDR/ESP/ORB_046300_046399/ESP_046395_1730/ESP_...\nMRO\nHIRISE\nESP_046395_1730\nESP_046395_1730_COLOR\n1\nMARS\n46395\nExtended Science Phase\n...\n-1584330.0\n-26573400.0\n-6.9957\n292.569\n-6.9979\n292.551\n-6.6838\n292.51\n-6.6815\n292.529\n\n\n138163\nMROHR_0001\nRDR/ESP/ORB_069100_069199/ESP_069178_2345/ESP_...\nMRO\nHIRISE\nESP_069178_2345\nESP_069178_2345_RED\n1\nMARS\n69178\nExtended Science Phase\n...\n12762196.0\n15708938.0\n53.8598\n76.7591\n53.8474\n76.602\n54.0013\n76.5672\n54.0137\n76.7249\n\n\n125490\nMROHR_0001\nRDR/ESP/ORB_063500_063599/ESP_063504_1995/ESP_...\nMRO\nHIRISE\nESP_063504_1995\nESP_063504_1995_COLOR\n1\nMARS\n63504\nExtended Science Phase\n...\n4638178.5\n12794202.0\n19.4523\n124.149\n19.45\n124.128\n19.5686\n124.113\n19.5709\n124.133\n\n\n\n\n5 rows × 54 columns\n\n\n\n\n\n\n\n\n\n\nfrom planetarypy.ctx import CTX\n\n\npid = ctrindex.sample(random_state=42).squeeze().PRODUCT_ID\npid\n\n'J07_047671_1256_XN_54S338W'\n\n\n\nctx = CTX(pid)\nctx\n\nPRODUCT_ID: J07_047671_1256_XN_54S338W\nURL: https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_2757/data/J07_047671_1256_XN_54S338W.IMG\nsource_path: /remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG\nShape: (8192, 2528)\n\n\n\nctx.source_path\n\nPath('/remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG')\n\n\n\nctx.download()\n\nFile exists. Use `overwrite=True` to download fresh.\n\n\n\n\n\n\nThe creation of this library was in part supported by:\n\nNASA Cassini UVIS mission\nNASA SSW grant NNX15AH36G\nNASA PDART grant 80NSSC20K0875\nNASA SSW grant 80NSSC20K0748\nGerman Space Agency (DLR Bonn), grant 50 OO 2204, on behalf of the German Federal Ministry for Economic Affairs and Climate Action.\nThis research has made use of the USGS Integrated Software for Imagers and Spectrometers (ISIS)(Laura et al. 2022)." + }, + { + "objectID": "index.html#install", + "href": "index.html#install", + "title": "PlanetaryPy", + "section": "", + "text": "pip install planetarypy\nThis will pull in these other dependencies and their dependencies:\ntomlkit pandas pvl numpy python-dateutil tqdm lxml yarl hirise-tools kalasiris" + }, + { + "objectID": "index.html#suggested-standard-abbreviations", + "href": "index.html#suggested-standard-abbreviations", + "title": "PlanetaryPy", + "section": "", + "text": "Inside these docs the package will be called PLPY for brevity.\nA standard Python import could be: plp or plpy\n\nbecause the last p in plp can be pronounced out, we consider these equivalent for human conversation and pronounce these “plippy”." + }, + { + "objectID": "index.html#general-scope", + "href": "index.html#general-scope", + "title": "PlanetaryPy", + "section": "", + "text": "First and foremost this package should provide support in working with planetary science data.\nWith working we mean:\n\nlocating\nretrieving\nreading\nfurther processing\n\nof data.\n\n\nThis library manages, via its PDS tools, multiple PDS3 index files per instrument that can be used for identifying data of interest. These index files are automatically downloaded and converted to the very performant (and cloud-ready) parquet file format. > Parquet is able to store advanced datatypes like nan-capable integer and full datetime objects, as opposed to HDF5.\n\n\n\nThe interface to getting data is via a path-retrieving function based on a PDS product-id. If that product-id is available locally, the path will be returned. If it is not, it will previously be downloaded, stored in a systematic fashion organized by mission and instrument, and then the local path will be returned.\n\n\n\nFor now, the library only returns the path to the object and the user needs to sort out the reading process. A recently funded NASA project Planetary Data Reader will be integrated here, so that basic reading into memory can be provided.\nAs such, we anticipate two classes of reading support: 1. basic reading into numpy and/or xarray 1. added reader functionality like basic plots and basic geospatial processing, as supported by interested parties\nThere will exist larger other packages that focus on working with a given instrument’s data, in which case that package could become an affiliated package with the planetarypy GitHub organization, if so desired.\n\n\n\nIn the future, additional frequently used procedures will be added to this library, e.g. * frequently used GDAL/rasterio procedures * frequently used SPICE operations * like surface illumination on a given body" + }, + { + "objectID": "index.html#pds-tools", + "href": "index.html#pds-tools", + "title": "PlanetaryPy", + "section": "", + "text": "Look at the Apps docs to see what pds.apps exist for easily getting PDS indexes. The find_index app is specifically useful when you don’t know what index files exist.\nSo far, the following indexes are supported (but not necessarily all tested within PLPY):\n\nCassini\n\nISS (all)\nUVIS (all)\n\nMRO\n\nCTX EDR\nHiRISE\n\nEDR, RDR, DTM\n\nEDR index has a bug (as delivered by the team, reported), where I need to activate an existing fix for it.\n\n\n\nLRO\n\nDiviner (DLRE)\n\nEDR, RDR\n\nLOLA\n\nEDR, RDR\n\n\n\n\n\nMore indexes of other instruments can be easily added by following the existing structure of what has been copied into your config at ~/.planetarypy_config.toml.\nPlease consider submitting a pull request for adding further PDS index files into the config file at its source: https://github.com/michaelaye/nbplanetary/blob/master/planetarypy/data/planetarypy_config.toml" + }, + { + "objectID": "index.html#utils", + "href": "index.html#utils", + "title": "PlanetaryPy", + "section": "", + "text": "Find something in Utils for working with NASA timestamps and a well working URL download function url_retrieve, among other stuff." + }, + { + "objectID": "index.html#experimentinstrument-specific", + "href": "index.html#experimentinstrument-specific", + "title": "PlanetaryPy", + "section": "", + "text": "So far, planetarypy supports CTX EDR and HiRISE RGB.NOMAP data. Look at the CTX and HiRISE pages for descriptions of classes for working with these data." + }, + { + "objectID": "index.html#bug-reports", + "href": "index.html#bug-reports", + "title": "PlanetaryPy", + "section": "", + "text": "Please submit bug reports at https://github.com/michaelaye/nbplanetary/issues" + }, + { + "objectID": "index.html#how-to-use", + "href": "index.html#how-to-use", + "title": "PlanetaryPy", + "section": "", + "text": "See PDS apps for more details.\n\nfrom planetarypy.pds.apps import get_index\n\n\nctrindex = get_index(\"mro.ctx\", \"edr\", refresh=False)\nctrindex.sample(5, random_state=42) # setting random_state to always get same files for docs\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nORIGINAL_PRODUCT_ID\nPRODUCT_ID\nIMAGE_TIME\nINSTRUMENT_ID\nINSTRUMENT_MODE_ID\nLINE_SAMPLES\nLINES\nSPATIAL_SUMMING\n...\nSUB_SOLAR_LATITUDE\nSUB_SPACECRAFT_LONGITUDE\nSUB_SPACECRAFT_LATITUDE\nSOLAR_DISTANCE\nSOLAR_LONGITUDE\nLOCAL_TIME\nIMAGE_SKEW_ANGLE\nRATIONALE_DESC\nDATA_QUALITY_DESC\nORBIT_NUMBER\n\n\n\n\n86101\nMROX_2757\nDATA/J07_047671_1256_XN_54S338W.IMG\n4A_04_10F0036A00\nJ07_047671_1256_XN_54S338W\n2016-09-27 00:24:54.682\nCTX\nNIFL\n2528\n8192\n1\n...\n-19.41\n338.09\n-54.43\n207762612.4\n230.58\n15.48\n90.1\nCrater in Noachis Terra\nOK\n47671\n\n\n54420\nMROX_1819\nDATA/D10_031170_1808_XN_00N221W.IMG\n4A_04_109C017D00\nD10_031170_1808_XN_00N221W\n2013-03-21 06:58:09.892\nCTX\nNIFL\n5056\n7168\n1\n...\n-24.39\n221.52\n0.88\n209925149.5\n286.15\n14.49\n90.1\nRide-along with HiRISE\nOK\n31170\n\n\n71053\nMROX_2331\nDATA/F10_039530_1470_XI_33S203W.IMG\n4A_04_10C9000F00\nF10_039530_1470_XI_33S203W\n2015-01-01 16:20:01.840\nCTX\nITL\n5056\n52224\n1\n...\n-25.3\n203.96\n-33.12\n207070298.2\n263.93\n15.2\n90.4\nTerrain in Terra Cimmeria\nOK\n39530\n\n\n51385\nMROX_1742\nDATA/D04_028919_2026_XN_22N327W.IMG\n4A_04_109002A800\nD04_028919_2026_XN_22N327W\n2012-09-26 21:17:00.483\nCTX\nNIFL\n5056\n6144\n1\n...\n0.67\n327.06\n22.78\n219814412.3\n178.44\n15.53\n90.1\nRide-along with HiRISE\nOK\n28919\n\n\n51923\nMROX_1757\nDATA/D05_029283_1524_XN_27S180W.IMG\n4A_04_1092020B00\nD05_029283_1524_XN_27S180W\n2012-10-25 05:44:21.786\nCTX\nNIFL\n5056\n9216\n1\n...\n-6.28\n178.36\n-27.56\n214830233.7\n194.72\n15.57\n90.1\nRide-along with HiRISE\nOK\n29283\n\n\n\n\n5 rows × 51 columns\n\n\n\n\nhirise_rdr = get_index(\"mro.hirise\", \"rdr\")\nhirise_rdr.sample(5, random_state=42)\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_NAME_SPECIFICATION\nINSTRUMENT_HOST_ID\nINSTRUMENT_ID\nOBSERVATION_ID\nPRODUCT_ID\nPRODUCT_VERSION_ID\nTARGET_NAME\nORBIT_NUMBER\nMISSION_PHASE_NAME\n...\nLINE_PROJECTION_OFFSET\nSAMPLE_PROJECTION_OFFSET\nCORNER1_LATITUDE\nCORNER1_LONGITUDE\nCORNER2_LATITUDE\nCORNER2_LONGITUDE\nCORNER3_LATITUDE\nCORNER3_LONGITUDE\nCORNER4_LATITUDE\nCORNER4_LONGITUDE\n\n\n\n\n144822\nMROHR_0001\nRDR/ESP/ORB_074100_074199/ESP_074107_1410/ESP_...\nMRO\nHIRISE\nESP_074107_1410\nESP_074107_1410_COLOR\n1\nMARS\n74107\nExtended Science Phase\n...\n-4568562.5\n2009279.5\n-38.7446\n159.311\n-38.7465\n159.287\n-38.614\n159.269\n-38.6121\n159.293\n\n\n22518\nMROHR_0001\nRDR/ESP/ORB_014000_014099/ESP_014080_1040/ESP_...\nMRO\nHIRISE\nESP_014080_1040\nESP_014080_1040_RED\n1\nMARS\n14080\nExtended Science Phase\n...\n-3193960.0\n-845180.0\n-76.0185\n165.215\n-76.0315\n164.858\n-75.6958\n164.658\n-75.6831\n165.005\n\n\n86634\nMROHR_0001\nRDR/ESP/ORB_046300_046399/ESP_046395_1730/ESP_...\nMRO\nHIRISE\nESP_046395_1730\nESP_046395_1730_COLOR\n1\nMARS\n46395\nExtended Science Phase\n...\n-1584330.0\n-26573400.0\n-6.9957\n292.569\n-6.9979\n292.551\n-6.6838\n292.51\n-6.6815\n292.529\n\n\n138163\nMROHR_0001\nRDR/ESP/ORB_069100_069199/ESP_069178_2345/ESP_...\nMRO\nHIRISE\nESP_069178_2345\nESP_069178_2345_RED\n1\nMARS\n69178\nExtended Science Phase\n...\n12762196.0\n15708938.0\n53.8598\n76.7591\n53.8474\n76.602\n54.0013\n76.5672\n54.0137\n76.7249\n\n\n125490\nMROHR_0001\nRDR/ESP/ORB_063500_063599/ESP_063504_1995/ESP_...\nMRO\nHIRISE\nESP_063504_1995\nESP_063504_1995_COLOR\n1\nMARS\n63504\nExtended Science Phase\n...\n4638178.5\n12794202.0\n19.4523\n124.149\n19.45\n124.128\n19.5686\n124.113\n19.5709\n124.133\n\n\n\n\n5 rows × 54 columns" + }, + { + "objectID": "index.html#instrument-tools", + "href": "index.html#instrument-tools", + "title": "PlanetaryPy", + "section": "", + "text": "from planetarypy.ctx import CTX\n\n\npid = ctrindex.sample(random_state=42).squeeze().PRODUCT_ID\npid\n\n'J07_047671_1256_XN_54S338W'\n\n\n\nctx = CTX(pid)\nctx\n\nPRODUCT_ID: J07_047671_1256_XN_54S338W\nURL: https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx/mrox_2757/data/J07_047671_1256_XN_54S338W.IMG\nsource_path: /remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG\nShape: (8192, 2528)\n\n\n\nctx.source_path\n\nPath('/remote/trove/geo/planet/Mars/CTX/pds/mrox_2757/J07_047671_1256_XN_54S338W.IMG')\n\n\n\nctx.download()\n\nFile exists. Use `overwrite=True` to download fresh." + }, + { + "objectID": "index.html#acknowledgements", + "href": "index.html#acknowledgements", + "title": "PlanetaryPy", + "section": "", + "text": "The creation of this library was in part supported by:\n\nNASA Cassini UVIS mission\nNASA SSW grant NNX15AH36G\nNASA PDART grant 80NSSC20K0875\nNASA SSW grant 80NSSC20K0748\nGerman Space Agency (DLR Bonn), grant 50 OO 2204, on behalf of the German Federal Ministry for Economic Affairs and Climate Action.\nThis research has made use of the USGS Integrated Software for Imagers and Spectrometers (ISIS)(Laura et al. 2022)." + }, + { + "objectID": "tutorials/tutorial.html", + "href": "tutorials/tutorial.html", + "title": "Tutorial", + "section": "", + "text": "from planetarypy.pds.apps import find_indexes, get_index, find_instruments\n\n\nfind_instruments?\n\n\nSignature: find_instruments(mission: str) -> list\nDocstring: Find existing instruments for a mission.\nFile: ~/Dropbox/src/nbplanetary/planetarypy/pds/apps.py\nType: function\n\n\n\n\nfind_instruments(\"mro\")\n\n['hirise', 'ctx']\n\n\nNow, seeing that the CTX instrument is supported, one could ask what index files (= catalogs) are available, using the dotted code for mission.instrument:\n\nfind_indexes(\"mro.ctx\")\n\n['edr']\n\n\nWe only have one index file for EDR data. Let’s get it, using the now 3-segments dot-code (it returns a pandas Dataframe):\n\nindex = get_index('mro.ctx.edr', refresh=False)\nindex.head()\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nORIGINAL_PRODUCT_ID\nPRODUCT_ID\nIMAGE_TIME\nINSTRUMENT_ID\nINSTRUMENT_MODE_ID\nLINE_SAMPLES\nLINES\nSPATIAL_SUMMING\n...\nSUB_SOLAR_LATITUDE\nSUB_SPACECRAFT_LONGITUDE\nSUB_SPACECRAFT_LATITUDE\nSOLAR_DISTANCE\nSOLAR_LONGITUDE\nLOCAL_TIME\nIMAGE_SKEW_ANGLE\nRATIONALE_DESC\nDATA_QUALITY_DESC\nORBIT_NUMBER\n\n\n\n\n0\nMROX_0001\nDATA/CRU_000001_9999_XN_99N999W.IMG\n4A_04_0001000400\nCRU_000001_9999_XN_99N999W\n2005-08-30 15:40:21.549\nCTX\nNIFL\n5056\n1024\n1\n...\n0.0\n0.0\n0.0\n0.0\n278.89\n10.16\n0.0\nInstrument checkout image of space\nOK\n-4242\n\n\n1\nMROX_0001\nDATA/CRU_000002_9999_XN_99N999W.IMG\n4A_04_0001000500\nCRU_000002_9999_XN_99N999W\n2005-09-08 15:59:45.313\nCTX\nNIFL\n5056\n15360\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.6\n0.0\nCalibration image of the Moon\nOK\n-4126\n\n\n2\nMROX_0001\nDATA/CRU_000003_9999_XN_99N999W.IMG\n4A_04_0001000600\nCRU_000003_9999_XN_99N999W\n2005-09-08 16:03:37.927\nCTX\nNIFL\n5056\n2048\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.66\n0.0\nCalibration image of Omega Centauri (globular ...\nOK\n-4126\n\n\n3\nMROX_0001\nDATA/CRU_000004_9999_XN_99N999W.IMG\n4A_04_0001000700\nCRU_000004_9999_XN_99N999W\n2005-09-08 16:08:23.841\nCTX\nNIFL\n5056\n2048\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.74\n0.0\nCalibration image of Omega Centauri (globular ...\nOK\n-4126\n\n\n4\nMROX_0001\nDATA/CRU_000005_9999_XN_99N999W.IMG\n4A_04_0001000800\nCRU_000005_9999_XN_99N999W\n2005-09-08 16:11:18.649\nCTX\nNIFL\n5056\n21504\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.79\n0.0\nCalibration image of the Moon\nOK\n-4126\n\n\n\n\n5 rows × 51 columns\n\n\n\nYou might have ssen, that planetarypy realized that the existing index on my disk was outdated and proceeded to get an updated one.\nThe warning is about badly formatted data on the PDS for which planetarypy had to force path names to the correct letter case. This is not something we can influence, but we reported the issue at the PDS, and here, we just let the user know, that we fudged around that issue.\nNote that the catalog ascii times have been converted to proper datetime objects, using the utility functions in planetarypy.utils. This means that you can use these times to create proper plots over time in case you are interested in catalog statistics.\n\nindex.IMAGE_TIME\n\n0 2005-08-30 15:40:21.549\n1 2005-09-08 15:59:45.313\n2 2005-09-08 16:03:37.927\n3 2005-09-08 16:08:23.841\n4 2005-09-08 16:11:18.649\n ... \n142363 2023-03-01 00:01:37.834\n142364 2023-03-01 00:15:17.076\n142365 2023-03-01 00:19:04.486\n142366 2023-03-01 00:29:24.818\n142367 2023-03-01 00:43:08.662\nName: IMAGE_TIME, Length: 142368, dtype: datetime64[ns]\n\n\nUsing standard pandas operations, we can now filte the data down, and identify a data product we are interested in:\n\nindex.columns\n\nIndex(['VOLUME_ID', 'FILE_SPECIFICATION_NAME', 'ORIGINAL_PRODUCT_ID',\n 'PRODUCT_ID', 'IMAGE_TIME', 'INSTRUMENT_ID', 'INSTRUMENT_MODE_ID',\n 'LINE_SAMPLES', 'LINES', 'SPATIAL_SUMMING', 'SCALED_PIXEL_WIDTH',\n 'PIXEL_ASPECT_RATIO', 'EMISSION_ANGLE', 'INCIDENCE_ANGLE',\n 'PHASE_ANGLE', 'CENTER_LONGITUDE', 'CENTER_LATITUDE',\n 'UPPER_LEFT_LONGITUDE', 'UPPER_LEFT_LATITUDE', 'UPPER_RIGHT_LONGITUDE',\n 'UPPER_RIGHT_LATITUDE', 'LOWER_LEFT_LONGITUDE', 'LOWER_LEFT_LATITUDE',\n 'LOWER_RIGHT_LONGITUDE', 'LOWER_RIGHT_LATITUDE', 'MISSION_PHASE_NAME',\n 'TARGET_NAME', 'SPACECRAFT_CLOCK_START_COUNT',\n 'FOCAL_PLANE_TEMPERATURE', 'LINE_EXPOSURE_DURATION', 'OFFSET_MODE_ID',\n 'SAMPLE_FIRST_PIXEL', 'SCALED_IMAGE_WIDTH', 'SCALED_IMAGE_HEIGHT',\n 'SPACECRAFT_ALTITUDE', 'TARGET_CENTER_DISTANCE', 'SLANT_DISTANCE',\n 'USAGE_NOTE', 'NORTH_AZIMUTH', 'SUB_SOLAR_AZIMUTH',\n 'SUB_SOLAR_LONGITUDE', 'SUB_SOLAR_LATITUDE', 'SUB_SPACECRAFT_LONGITUDE',\n 'SUB_SPACECRAFT_LATITUDE', 'SOLAR_DISTANCE', 'SOLAR_LONGITUDE',\n 'LOCAL_TIME', 'IMAGE_SKEW_ANGLE', 'RATIONALE_DESC', 'DATA_QUALITY_DESC',\n 'ORBIT_NUMBER'],\n dtype='object')\n\n\n\nindex.EMISSION_ANGLE.describe()\n\ncount 142368.0\nmean 4.396005\nstd 18.999974\nmin 0.0\n25% 0.1\n50% 1.56\n75% 5.94\nmax 999.9\nName: EMISSION_ANGLE, dtype: Float64\n\n\n\nindex.LOCAL_TIME.describe()\n\ncount 142368.0\nmean 15.055919\nstd 1.427996\nmin 0.0\n25% 14.65\n50% 15.12\n75% 15.53\nmax 23.99\nName: LOCAL_TIME, dtype: Float64\n\n\n\nangle_filter = index.EMISSION_ANGLE < 1.0\n\nLet’s also calculate a mean latitude and longitude instead of the image corners, for rough location filtering. As a habit, we recommend to assign lower case letters to column names that we add on top of the PDS ones:\n\nindex = index.assign(\n lat_mean=(\n index.UPPER_LEFT_LATITUDE\n + index.UPPER_RIGHT_LATITUDE\n + index.LOWER_LEFT_LATITUDE\n + index.LOWER_RIGHT_LATITUDE) /\n 4)\n\n\nindex = index.assign(\n lon_mean=(\n index.UPPER_LEFT_LONGITUDE\n + index.UPPER_RIGHT_LONGITUDE\n + index.LOWER_LEFT_LONGITUDE\n + index.LOWER_RIGHT_LONGITUDE) /\n 4)\n\n\nindex.info()\n\n<class 'pandas.core.frame.DataFrame'>\nRangeIndex: 142368 entries, 0 to 142367\nData columns (total 53 columns):\n # Column Non-Null Count Dtype \n--- ------ -------------- ----- \n 0 VOLUME_ID 142368 non-null string \n 1 FILE_SPECIFICATION_NAME 142368 non-null string \n 2 ORIGINAL_PRODUCT_ID 142368 non-null string \n 3 PRODUCT_ID 142368 non-null string \n 4 IMAGE_TIME 142368 non-null datetime64[ns]\n 5 INSTRUMENT_ID 142368 non-null string \n 6 INSTRUMENT_MODE_ID 142368 non-null string \n 7 LINE_SAMPLES 142368 non-null Int64 \n 8 LINES 142368 non-null Int64 \n 9 SPATIAL_SUMMING 142368 non-null Int64 \n 10 SCALED_PIXEL_WIDTH 142368 non-null Float64 \n 11 PIXEL_ASPECT_RATIO 142368 non-null Float64 \n 12 EMISSION_ANGLE 142368 non-null Float64 \n 13 INCIDENCE_ANGLE 142368 non-null Float64 \n 14 PHASE_ANGLE 142368 non-null Float64 \n 15 CENTER_LONGITUDE 142368 non-null Float64 \n 16 CENTER_LATITUDE 142368 non-null Float64 \n 17 UPPER_LEFT_LONGITUDE 142368 non-null Float64 \n 18 UPPER_LEFT_LATITUDE 142368 non-null Float64 \n 19 UPPER_RIGHT_LONGITUDE 142368 non-null Float64 \n 20 UPPER_RIGHT_LATITUDE 142368 non-null Float64 \n 21 LOWER_LEFT_LONGITUDE 142368 non-null Float64 \n 22 LOWER_LEFT_LATITUDE 142368 non-null Float64 \n 23 LOWER_RIGHT_LONGITUDE 142368 non-null Float64 \n 24 LOWER_RIGHT_LATITUDE 142368 non-null Float64 \n 25 MISSION_PHASE_NAME 142368 non-null string \n 26 TARGET_NAME 142368 non-null string \n 27 SPACECRAFT_CLOCK_START_COUNT 142368 non-null string \n 28 FOCAL_PLANE_TEMPERATURE 142368 non-null Float64 \n 29 LINE_EXPOSURE_DURATION 142368 non-null Float64 \n 30 OFFSET_MODE_ID 142368 non-null string \n 31 SAMPLE_FIRST_PIXEL 142368 non-null Int64 \n 32 SCALED_IMAGE_WIDTH 142368 non-null Float64 \n 33 SCALED_IMAGE_HEIGHT 142368 non-null Float64 \n 34 SPACECRAFT_ALTITUDE 142368 non-null Float64 \n 35 TARGET_CENTER_DISTANCE 142368 non-null Float64 \n 36 SLANT_DISTANCE 142368 non-null Float64 \n 37 USAGE_NOTE 142368 non-null string \n 38 NORTH_AZIMUTH 142368 non-null Float64 \n 39 SUB_SOLAR_AZIMUTH 142368 non-null Float64 \n 40 SUB_SOLAR_LONGITUDE 142368 non-null Float64 \n 41 SUB_SOLAR_LATITUDE 142368 non-null Float64 \n 42 SUB_SPACECRAFT_LONGITUDE 142368 non-null Float64 \n 43 SUB_SPACECRAFT_LATITUDE 142368 non-null Float64 \n 44 SOLAR_DISTANCE 142368 non-null Float64 \n 45 SOLAR_LONGITUDE 142368 non-null Float64 \n 46 LOCAL_TIME 142368 non-null Float64 \n 47 IMAGE_SKEW_ANGLE 142368 non-null Float64 \n 48 RATIONALE_DESC 142368 non-null string \n 49 DATA_QUALITY_DESC 142368 non-null string \n 50 ORBIT_NUMBER 142368 non-null Int64 \n 51 lat_mean 142368 non-null Float64 \n 52 lon_mean 142368 non-null Float64 \ndtypes: Float64(34), Int64(5), datetime64[ns](1), string(13)\nmemory usage: 62.9 MB\n\n\n\nlat_filter = index.lat_mean.between(-80,-60)\nlon_filter = index.lon_mean.between(0, 10)\n\n\nindex[angle_filter & lat_filter & lon_filter]\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nORIGINAL_PRODUCT_ID\nPRODUCT_ID\nIMAGE_TIME\nINSTRUMENT_ID\nINSTRUMENT_MODE_ID\nLINE_SAMPLES\nLINES\nSPATIAL_SUMMING\n...\nSUB_SPACECRAFT_LATITUDE\nSOLAR_DISTANCE\nSOLAR_LONGITUDE\nLOCAL_TIME\nIMAGE_SKEW_ANGLE\nRATIONALE_DESC\nDATA_QUALITY_DESC\nORBIT_NUMBER\nlat_mean\nlon_mean\n\n\n\n\n1267\nMROX_0035\nDATA/P03_002074_1155_XN_64S004W.IMG\n4A_04_1008005C00\nP03_002074_1155_XN_64S004W\n2007-01-05 01:02:50.418\nCTX\nNIFL\n5056\n12288\n1\n...\n-64.59\n225779573.9\n161.53\n16.02\n90.1\nDunes in Wegener Crater in MOC R15-01815\nOK\n2074\n-64.59\n4.61\n\n\n4551\nMROX_0165\nDATA/P09_004738_1020_XN_78S008W.IMG\n4A_04_1014016300\nP09_004738_1020_XN_78S008W\n2007-07-31 14:55:12.379\nCTX\nNIFL\n5056\n52224\n1\n...\n-77.97\n210058626.6\n286.93\n15.36\n90.4\nSouth polar landforms\nOK\n4738\n-77.965\n5.9325\n\n\n4677\nMROX_0173\nDATA/P10_004883_1020_XN_78S005W.IMG\n4A_04_1016007800\nP10_004883_1020_XN_78S005W\n2007-08-11 22:05:40.494\nCTX\nNIFL\n5056\n52224\n1\n...\n-78.09\n211455781.6\n293.82\n15.27\n90.4\nSouth polar seasonal cap edge\nOK\n4883\n-78.08\n4.57\n\n\n5184\nMROX_0197\nDATA/P11_005252_1199_XI_60S008W.IMG\n4A_04_101900A800\nP11_005252_1199_XI_60S008W\n2007-09-09 16:17:03.275\nCTX\nITL\n5056\n14336\n1\n...\n-60.18\n215826377.3\n310.92\n14.58\n90.1\nSouth mid- to high-latitude crater\nOK\n5252\n-60.1875\n8.6425\n\n\n5395\nMROX_0209\nDATA/P11_005384_1066_XN_73S007W.IMG\n4A_04_1018017C00\nP11_005384_1066_XN_73S007W\n2007-09-19 23:03:52.412\nCTX\nNIFL\n5056\n35840\n1\n...\n-73.48\n217613174.8\n316.85\n14.82\n90.3\nSisyphi Cavi\nOK\n5384\n-73.48\n7.05\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n133106\nMROX_4264\nDATA/U09_074575_1037_XN_76S005W.IMG\n4A_04_117A02AC00\nU09_074575_1037_XN_76S005W\n2022-06-24 05:06:01.401\nCTX\nNIFL\n5056\n52224\n1\n...\n-76.26\n206646214.2\n252.89\n15.96\n90.4\nSisyphi Cavi region\nOK\n74575\n-76.2575\n4.98\n\n\n133926\nMROX_4298\nDATA/U10_074878_1161_XN_63S005W.IMG\n4A_04_117C022300\nU10_074878_1161_XN_63S005W\n2022-07-17 19:55:57.184\nCTX\nNIFL\n2528\n24576\n1\n...\n-63.93\n207381603.7\n267.84\n15.35\n90.2\nSouthern highlands\nOK\n74878\n-63.94\n5.53\n\n\n134438\nMROX_4315\nDATA/U10_075023_1075_XN_72S001W.IMG\n4A_04_117C042B00\nU10_075023_1075_XN_72S001W\n2022-07-29 03:04:41.315\nCTX\nNIFL\n5056\n7168\n1\n...\n-72.61\n208145471.6\n274.94\n15.41\n90.1\nRide-along with HiRISE\nOK\n75023\n-72.6275\n1.005\n\n\n135612\nMROX_4352\nDATA/U12_075498_1055_XN_74S006W.IMG\n4A_04_1180007200\nU12_075498_1055_XN_74S006W\n2022-09-04 03:17:19.126\nCTX\nNIFL\n5056\n7168\n1\n...\n-74.52\n212296356.7\n297.69\n15.13\n90.1\nRide-along with HiRISE\nOK\n75498\n-74.535\n6.62\n\n\n136976\nMROX_4402\nDATA/U13_076012_1155_XN_64S004W.IMG\n4A_04_118201BB00\nU13_076012_1155_XN_64S004W\n2022-10-14 04:35:24.111\nCTX\nNIFL\n5056\n7168\n1\n...\n-64.62\n218924928.8\n321.08\n14.71\n90.1\nRide-along with HiRISE\nOK\n76012\n-64.6275\n3.995\n\n\n\n\n119 rows × 53 columns\n\n\n\nCopying a PRODUCT_ID, we can now automatically download it via the CTX utilities:\n\npid = \"P03_002074_1155_XN_64S004W\"\n\n\nfrom planetarypy import ctx\n\nAbove could issue a warning that is about not finding an ISIS installation, which is required for SOME of this library’s features. Make sure your current environment has the environment variable ISISROOT and ISISDATA defined, so that planetarypy can find the ISIS tools, in case you want to use functions related to them.\nNow let’s use the CTX class to access data:\n\ndata = ctx.CTX(pid)\n\n\ndata.download()\n\nFile exists. Use `overwrite=True` to download fresh.\n\n\nThe data was downloaded to a mission- and instrument-based storage folder that was defined the first time you imported planetarypy. You can verify it’s location by looking at the config object:\n\nfrom planetarypy.config import config\n\n\nconfig.storage_root\n\nPath('/home/ayek72/mnt/slowdata/planetarypy')\n\n\nWe can now read the data into a multi-dimensional xarray, which supports elaborate indexing via its coordinates.\n\ndata.edr_da\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<xarray.DataArray 'P03_002074_1155 EDR' (y: 12288, x: 5056)>\n[62128128 values with dtype=uint8]\nCoordinates:\n * x (x) float64 0.5 1.5 2.5 3.5 ... 5.054e+03 5.054e+03 5.056e+03\n * y (y) float64 0.5 1.5 2.5 3.5 ... 1.229e+04 1.229e+04 1.229e+04\nAttributes: (12/19)\n BANDWIDTH: \n CENTER_FILTER_WAVELENGTH: \n DATA_SET_ID: \"MRO-M-CTX-2-EDR-L0-V1.0\"\n FILTER_NAME: \n INSTRUMENT_ID: CTX\n INSTRUMENT_NAME: \"CONTEXT CAMERA\"\n ... ...\n START_TIME: 2007-01-05T01:02:50.418\n STOP_TIME: 2007-01-05T01:03:13.479\n TARGET_NAME: MARS\n _FillValue: 0\n scale_factor: 1.0\n add_offset: 0.0xarray.DataArray'P03_002074_1155 EDR'y: 12288x: 5056...[62128128 values with dtype=uint8]Coordinates: (2)x(x)float640.5 1.5 2.5 ... 5.054e+03 5.056e+03array([5.0000e-01, 1.5000e+00, 2.5000e+00, ..., 5.0535e+03, 5.0545e+03,\n 5.0555e+03])y(y)float640.5 1.5 2.5 ... 1.229e+04 1.229e+04array([5.00000e-01, 1.50000e+00, 2.50000e+00, ..., 1.22855e+04, 1.22865e+04,\n 1.22875e+04])Indexes: (2)xPandasIndexPandasIndex(Float64Index([ 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,\n 8.5, 9.5,\n ...\n 5046.5, 5047.5, 5048.5, 5049.5, 5050.5, 5051.5, 5052.5, 5053.5,\n 5054.5, 5055.5],\n dtype='float64', name='x', length=5056))yPandasIndexPandasIndex(Float64Index([ 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5,\n 7.5, 8.5, 9.5,\n ...\n 12278.5, 12279.5, 12280.5, 12281.5, 12282.5, 12283.5, 12284.5,\n 12285.5, 12286.5, 12287.5],\n dtype='float64', name='y', length=12288))Attributes: (19)BANDWIDTH :CENTER_FILTER_WAVELENGTH :DATA_SET_ID :\"MRO-M-CTX-2-EDR-L0-V1.0\"FILTER_NAME :INSTRUMENT_ID :CTXINSTRUMENT_NAME :\"CONTEXT CAMERA\"MISSION_NAME :NOTE :PRODUCER_INSTITUTION_NAME :PRODUCT_CREATION_TIME :2007-08-08T23:29:12PRODUCT_ID :\"P03_002074_1155_XN_64S004W\"PRODUCT_TYPE :SPACECRAFT_NAME :MARS_RECONNAISSANCE_ORBITERSTART_TIME :2007-01-05T01:02:50.418STOP_TIME :2007-01-05T01:03:13.479TARGET_NAME :MARS_FillValue :0scale_factor :1.0add_offset :0.0\n\n\nBut one also get the image data simply as a numpy array:\n\ndata.edr_da.values\n\narray([[ 9, 9, 10, ..., 8, 10, 8],\n [ 9, 8, 10, ..., 9, 10, 9],\n [ 9, 8, 10, ..., 8, 11, 10],\n ...,\n [11, 10, 11, ..., 10, 10, 10],\n [10, 9, 10, ..., 9, 10, 10],\n [11, 10, 10, ..., 11, 11, 10]], dtype=uint8)\n\n\nOr plot the image using holoviews and datashader, so that even large images won’t bog down your browser:\n\ndata.plot_edr()\n\n\n\n\n\n\n \n\n\n\n\nNote, that the above data is the uncalibrated EDR, so the dynamics of the image seem a little rough. If you have configured the ISIS properly, so that the current Python environment is aware of it (using ISISROOT and ISISDATA env variables), you can calibrate this data yourself now:" + }, + { + "objectID": "tutorials/pdw_2023.html", + "href": "tutorials/pdw_2023.html", + "title": "On the way to a core PlanetaryPy Package", + "section": "", + "text": "PlanetaryPy organization is community effort to\n\ndevelop a core Python package for planetary science\nhelp other planetary science Python programmers to disseminate their work\n\nThis talk is about the core package status only." + }, + { + "objectID": "tutorials/pdw_2023.html#what-is-this", + "href": "tutorials/pdw_2023.html#what-is-this", + "title": "On the way to a core PlanetaryPy Package", + "section": "", + "text": "PlanetaryPy organization is community effort to\n\ndevelop a core Python package for planetary science\nhelp other planetary science Python programmers to disseminate their work\n\nThis talk is about the core package status only." + }, + { + "objectID": "tutorials/pdw_2023.html#core-package-work-plan", + "href": "tutorials/pdw_2023.html#core-package-work-plan", + "title": "On the way to a core PlanetaryPy Package", + "section": "Core package work plan", + "text": "Core package work plan\n\nI am since long working on a core package draft.\nNothing is especially clever, the structured unification is the clue!\nShall be submitted (done?) to the community members for review.\nAfter successful review open for public pull requests and hackathons." + }, + { + "objectID": "tutorials/pdw_2023.html#core-package-focal-points", + "href": "tutorials/pdw_2023.html#core-package-focal-points", + "title": "On the way to a core PlanetaryPy Package", + "section": "Core package focal points", + "text": "Core package focal points\n\nEasier access, download, and local management of\n\nPDS data\nSPICE kernels\n\nRemoving need to learn various web interfaces for different data\nWorking easier with collections of PDS data\nEasy basic SPICE calculations with human readable I/F\nSome web and time related utilities" + }, + { + "objectID": "tutorials/pdw_2023.html#pds-indexes-1", + "href": "tutorials/pdw_2023.html#pds-indexes-1", + "title": "On the way to a core PlanetaryPy Package", + "section": "PDS Indexes", + "text": "PDS Indexes\n\n\n\nPDS Indexes contain useful meta-data for PDS datasets\nplanetarypy provides access to these via a config file\n\npull requests to config file will add more findable indices!\n\nconfig file tells planetarypy where to find index\n\n\n\nplanetarypy downloads index file and\nstored as parquet file, ready for pandas based analysis.\ntells user when new index is available" + }, + { + "objectID": "tutorials/pdw_2023.html#example-use", + "href": "tutorials/pdw_2023.html#example-use", + "title": "On the way to a core PlanetaryPy Package", + "section": "Example use", + "text": "Example use\n\nfrom planetarypy.pds.apps import get_index\n\ndf = get_index(\"cassini.iss\", \"index\")\nprint(df.info())\ndf.head(3)[\"FILE_NAME IMAGE_MID_TIME IMAGE_OBSERVATION_TYPE\".split()]\n\n<class 'pandas.core.frame.DataFrame'>\nRangeIndex: 407299 entries, 0 to 407298\nColumns: 140 entries, FILE_NAME to STANDARD_DATA_PRODUCT_ID\ndtypes: Float64(70), Int64(20), datetime64[ns](7), string(43)\nmemory usage: 470.0 MB\nNone\n\n\n\n\n\n\n\n\n\nFILE_NAME\nIMAGE_MID_TIME\nIMAGE_OBSERVATION_TYPE\n\n\n\n\n0\nN1454725799_1.IMG\n2004-02-06 02:07:06.458\nOPNAV\n\n\n1\nN1454726579_1.IMG\n2004-02-06 02:20:06.362\nOPNAV\n\n\n2\nN1454727359_1.IMG\n2004-02-06 02:33:06.397\nOPNAV" + }, + { + "objectID": "tutorials/pdw_2023.html#instrument-data-1", + "href": "tutorials/pdw_2023.html#instrument-data-1", + "title": "On the way to a core PlanetaryPy Package", + "section": "Instrument data", + "text": "Instrument data\n\nMeant to serve as basic data access, read, and access classes\n\nto be boosted in the future by the GOAT PDS reader pdr by Million, Inc.\n\nconfig file controls what data levels are accessible\n\nand how they are stored locally\n\ncurrently CTX, HiRISE, UVIS, CISS are supported (Diviner in the works)" + }, + { + "objectID": "tutorials/pdw_2023.html#example-use-hirise", + "href": "tutorials/pdw_2023.html#example-use-hirise", + "title": "On the way to a core PlanetaryPy Package", + "section": "Example use HiRISE", + "text": "Example use HiRISE\n\nfrom planetarypy.hirise import ProductPathfinder as PPF\n\nppf = PPF(\"PSP_003092_0985_RED\")\n\nprint(ppf.jp2_path)\nprint(ppf.homepage)\nprint(ppf.abrowse_path)\nprint(ppf.nomap_thumbnail_path)\n\n\n\n\n\n\n\n\n\n\n\nRDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.JP2\nhttps://uahirise.org/PSP_003092_0985\nEXTRAS/RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.abrowse.jpg\nEXTRAS/RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.NOMAP.thumb.jpg" + }, + { + "objectID": "tutorials/pdw_2023.html#example-use-ctxcollection", + "href": "tutorials/pdw_2023.html#example-use-ctxcollection", + "title": "On the way to a core PlanetaryPy Package", + "section": "Example use CTXCollection", + "text": "Example use CTXCollection\n\nfrom planetarypy.ctx import CTXCollection\n\ncoll = CTXCollection.by_month(\"F01\")\nprint(coll.n_items)\nprint(len(coll.get_corrupted()))\n\n1321\n35" + }, + { + "objectID": "tutorials/pdw_2023.html#archived-spice-kernel-sets", + "href": "tutorials/pdw_2023.html#archived-spice-kernel-sets", + "title": "On the way to a core PlanetaryPy Package", + "section": "Archived SPICE kernel sets", + "text": "Archived SPICE kernel sets\n\n\n\nNAIF offers archived mission kernel sets for 33 missions:\nKernels can be subset by time window using Subset link.\nplanetarypy offers programmatic wrapper around subset feature.\n\n\n\nZip file unpacked.\nKernel files stored locally and logically.\nMeta-kernel edited appropriately and immediately loadable." + }, + { + "objectID": "tutorials/pdw_2023.html#example-use-1", + "href": "tutorials/pdw_2023.html#example-use-1", + "title": "On the way to a core PlanetaryPy Package", + "section": "Example use", + "text": "Example use\n\nfrom planetarypy.spice import kernels\n\nkernels.datasets.drop(\"path\", axis=1).head()\n\n\n\n\n\n\n\n\nMission Name\nPDS3 or PDS4\nData Size (GB)\nStart Time\nStop Time\n\n\nshorthand\n\n\n\n\n\n\n\n\n\nbc\nBepiColombo\n4\n2.3\n2018-10-20\n2023-06-21\n\n\ncassini\nCassini Orbiter\n3\n62.5\n1997-10-15\n2017-09-15\n\n\nclementine\nClementine\n3\n0.8\n1994-01-26\n1994-05-07\n\n\ndart\nDART\n4\n10.0\n2021-11-09\n2050-01-01\n\n\ndawn\nDAWN\n3\n86.4\n2007-09-27\n2018-10-31\n\n\n\n\n\n\n\n\nTwo main user functions:\n\nget_metakernel_and_files\n\nwill check if the kernel files are already locally available\nif not, download kernels\nreturns the path to the edited meta-kernel\n\nlist_kernels_for_day\n\nwill only list kernel filenames valid for the given day" + }, + { + "objectID": "tutorials/pdw_2023.html#generic-kernels", + "href": "tutorials/pdw_2023.html#generic-kernels", + "title": "On the way to a core PlanetaryPy Package", + "section": "Generic kernels", + "text": "Generic kernels\n\nManages a minimal set for basic illumination calculations\nCurrently slightly biased for Mars but many other bodies work\nKernels are automatically downloaded and loaded when needed." + }, + { + "objectID": "tutorials/pdw_2023.html#example-use-2", + "href": "tutorials/pdw_2023.html#example-use-2", + "title": "On the way to a core PlanetaryPy Package", + "section": "Example use", + "text": "Example use\n\nfrom planetarypy.spice.spicer import MoonSpicer\n\nmoon = MoonSpicer(\"2022-02-22\")\nprint(f\"Sol. const: {moon.solar_constant:.1f}\")\nmoon.set_spoint_by(lat=0, lon=0)\nmoon.aspect = 180\nmoon.tilt = 30\nprint(f\"Irradiance on tilted surface element: {moon.F_tilt:.1f}\")\n\nSol. const: 1388.4 W / m2\nIrradiance on tilted surface element: 412.5 W / m2" + }, + { + "objectID": "api/pds.utils.html", + "href": "api/pds.utils.html", + "title": "PDS Utils", + "section": "", + "text": "source\n\nIndexLabel\n\n IndexLabel (labelpath:Union[str,pathlib.Path])\n\nSupport working with label files of PDS Index tables.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\nlabelpath\nUnion\nPath to the labelfile for a PDS Indexfile.The actual table should reside in the same folder to be automatically parsedwhen calling the read_index_data method.\n\n\n\n\nsource\n\n\nindex_to_df\n\n index_to_df (indexpath:Union[str,pathlib.Path],\n label:__main__.IndexLabel, convert_times=True)\n\nThe main reader function for PDS Indexfiles.\nIn conjunction with an IndexLabel object that figures out the column widths, this reader should work for all PDS TAB files.\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nindexpath\nUnion\n\nPath to the index TAB file\n\n\nlabel\nIndexLabel\n\nLabel object that has both the column names and the columns widths as attributes‘colnames’ and ‘colspecs’\n\n\nconvert_times\nbool\nTrue\nSwitch to control if to convert columns with “TIME” in name (unless COUNT is as well in name) to datetime\n\n\n\n\nsource\n\n\nPVLColumn\n\n PVLColumn (pvlobj)\n\nManages just one of the columns in a table that is described via PVL.\n\nsource\n\n\ndecode_line\n\n decode_line (linedata:str, labelpath:Union[str,pathlib.Path])\n\nDecode one line of tabbed data with the appropriate label file.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\nlinedata\nstr\nOne line of a .tab data file\n\n\nlabelpath\nUnion\nPath to the appropriate label that describes the data.\n\n\n\n\nsource\n\n\nfind_mixed_type_cols\n\n find_mixed_type_cols (df:pandas.core.frame.DataFrame, fix:bool=True)\n\nFor a given dataframe, find the columns that are of mixed type.\nTool to help with the performance warning when trying to save a pandas DataFrame as a HDF. When a column changes datatype somewhere, pickling occurs, slowing down the reading process of the HDF file.\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\ndf\nDataFrame\n\nDataframe to be searched for mixed data-types\n\n\nfix\nbool\nTrue\nSwitch to control if NaN values in these problem columns should be replaced by the string ‘UNKNOWN’\n\n\nReturns\nlist\n\nList of column names that have data type changes within themselves.\n\n\n\n\nsource\n\n\nfix_hirise_edrcumindex\n\n fix_hirise_edrcumindex (infname:Union[str,pathlib.Path],\n outfname:Union[str,pathlib.Path])\n\nFix HiRISE EDRCUMINDEX.\nThe HiRISE EDRCUMINDEX has some broken lines where the SCAN_EXPOSURE_DURATION is of format F10.4 instead of the defined F9.4. This function simply replaces those incidences with one less decimal fraction, so 20000.0000 becomes 20000.000.\n\n\n\n\nType\nDetails\n\n\n\n\ninfname\nUnion\nPath to broken EDRCUMINDEX.TAB\n\n\noutfname\nUnion\nPath where to store the fixed TAB file" + }, + { + "objectID": "api/cassini_iss.html", + "href": "api/cassini_iss.html", + "title": "Cassini ISS", + "section": "", + "text": "storage_root\n\nPath('/Users/maye/planetarypy_data/missions/cassini/iss')\n\n\n\nsource\n\nDataRetriever\n\n DataRetriever (pid)\n\nInitialize self. See help(type(self)) for accurate signature.\n\n\n\n\nDetails\n\n\n\n\npid\nPDS product_id, e.g. N1454725799\n\n\n\n\npid = \"N1454725799\"\n\n\ndm = DataRetriever(pid)\n\n\ndm.raw_fname\n\n'N1454725799_1.IMG'\n\n\n\ndm.raw_data_url\n\nURL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.IMG')\n\n\n\ndm.raw_label_url\n\nURL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.LBL')\n\n\n\ndm.raw_prefix_fmt_url\n\nURL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/prefix2.fmt')\n\n\n\ndm.raw_tlmtab_url\n\nURL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/tlmtab.fmt')\n\n\n\ndm.calib_data_url\n\nURL('https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.IMG')\n\n\n\nsource\n\n\nISS\n\n ISS (pid)\n\nInitialize self. See help(type(self)) for accurate signature.\n\nid = \"N1874681996\"\nid = \"N1454725799\"\n# id = \"N1878581142\"\n\n\nlist(storage_root.rglob(f\"{id}*\"))\n\n[Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799'),\n Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799/N1454725799_1_CALIB.IMG')]\n\n\n\niss = ISS(pid)\n\nFound 1 obsids.\n\n\n\niss.local_folder\n\nPath('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799')\n\n\n\niss.raw_data_url\n\nURL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.IMG')\n\n\n\niss.raw_tlmtab_url\n\nURL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/tlmtab.fmt')\n\n\n\niss.download_calib()\n\nFile exists. Use `overwrite` to force re-download.\n\n\n\nconfig.storage_root\n\nPath('/Users/maye/planetarypy_data')\n\n\n\niss.dict.keys()\n\ndict_keys(['coiss_raw', 'coiss_calib', 'coiss_thumb', 'coiss_medium', 'coiss_full', 'coiss_documentation', 'rms_index', 'inventory', 'planet_geometry', 'moon_geometry', 'ring_geometry', 'browse_thumb', 'browse_small', 'browse_medium', 'browse_full'])\n\n\n\niss.local_calib_path\n\nPath('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799/N1454725799_1_CALIB.IMG')\n\n\n\niss.calib_data_url\n\nURL('https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.IMG')\n\n\n\ndm.calib_data_url\n\nURL('https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.IMG')\n\n\n\niss.raw_data_url\n\nURL('https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.IMG')\n\n\n\niss.volume\n\n'COISS_2001'\n\n\n\niss.local_folder\n\nPath('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799')\n\n\n\ndef get_raw_data_path(product_id):\n iss = ISS(product_id)\n return iss.local_data_path\n\n\nid\n\n'N1454725799'\n\n\n\nlist(storage_root.glob(f\"**/{id}\"))\n\n[Path('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799')]\n\n\n\nstorage_root\n\nPath('/Users/maye/planetarypy_data/missions/cassini/iss')\n\n\n\n!ls {storage_root}\n\nN1454725799/ N1874681996/ indexes/\n\n\n\nget_raw_data_path(id)\n\nFound 1 obsids.\n\n\nPath('/Users/maye/planetarypy_data/missions/cassini/iss/N1454725799/N1454725799_1.IMG')\n\n\n\niss.dict\n\n{'coiss_raw': ['https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.IMG',\n 'https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1.LBL',\n 'https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/prefix2.fmt',\n 'https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/label/tlmtab.fmt'],\n 'coiss_calib': ['https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.IMG',\n 'https://opus.pds-rings.seti.org/holdings/calibrated/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_CALIB.LBL'],\n 'coiss_thumb': ['https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/extras/thumbnail/1454725799_1455008789/N1454725799_1.IMG.jpeg_small'],\n 'coiss_medium': ['https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/extras/browse/1454725799_1455008789/N1454725799_1.IMG.jpeg'],\n 'coiss_full': ['https://opus.pds-rings.seti.org/holdings/volumes/COISS_2xxx/COISS_2001/extras/full/1454725799_1455008789/N1454725799_1.IMG.png'],\n 'coiss_documentation': ['https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/VICAR-File-Format.pdf',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/ISS-Users-Guide.pdf',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/ISS-Users-Guide.docx',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Data-Product-SIS.txt',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Data-Product-SIS.pdf',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Cassini-ISS-Final-Report.pdf',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Calibration-Theoretical-Basis.pdf',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Calibration-Plan.pdf',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/CISSCAL-Users-Guide.pdf',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Archive-SIS.txt',\n 'https://opus.pds-rings.seti.org/holdings/documents/COISS_0xxx/Archive-SIS.pdf'],\n 'rms_index': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_index.tab',\n 'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_index.lbl'],\n 'inventory': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_inventory.csv',\n 'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_inventory.lbl'],\n 'planet_geometry': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_saturn_summary.tab',\n 'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_saturn_summary.lbl'],\n 'moon_geometry': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_moon_summary.tab',\n 'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_moon_summary.lbl'],\n 'ring_geometry': ['https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_ring_summary.tab',\n 'https://opus.pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2001/COISS_2001_ring_summary.lbl'],\n 'browse_thumb': ['https://opus.pds-rings.seti.org/holdings/previews/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_thumb.jpg'],\n 'browse_small': ['https://opus.pds-rings.seti.org/holdings/previews/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_small.jpg'],\n 'browse_medium': ['https://opus.pds-rings.seti.org/holdings/previews/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_med.jpg'],\n 'browse_full': ['https://opus.pds-rings.seti.org/holdings/previews/COISS_2xxx/COISS_2001/data/1454725799_1455008789/N1454725799_1_full.png']}" + }, + { + "objectID": "api/pds.indexes.html", + "href": "api/pds.indexes.html", + "title": "PDS Indexes", + "section": "", + "text": "source\n\nIndex\n\n Index (key:str, url:str=None, check_update:bool=True)\n\nIndex manager class.\nThis class manages one index, identified by a dotted key, e.g. cassini.iss.ring_summary\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nkey\nstr\n\nNested (dotted) key, e.g. cassini.iss.ring_summary\n\n\nurl\nstr\nNone\nURL to index. If not given, will be read from config object.\n\n\ncheck_update\nbool\nTrue\nswitch if dynamic URLS will be derived upon start\n\n\n\n\nsource\n\n\nIndex.parse_key\n\n Index.parse_key (key:str)\n\nTake care of different ways how the key could be structured.\nThis involves adding the sub-key indexes for the config file structure, which is something the user of this class should not need to know.\n\n\n\n\nType\nDetails\n\n\n\n\nkey\nstr\ndotted key\n\n\n\n\nsource\n\n\nIndex.download\n\n Index.download ()\n\nWrapping URLs for downloading PDS indices and their label files.\n\nsource\n\n\nIndex.update_available\n\n Index.update_available ()\n\nProperty indicating if the index needs to be downloaded.\n\nkey = \"missions.cassini.iss.indexes.moon_summary\"\nkey = \"missions.lro.lroc.edr\"\n\n\nindex = Index(key, check_update=True)\nindex\n\nKey: missions.lro.lroc.indexes.edr\nURL: http://pds.lroc.asu.edu/data/LRO-L-LROC-2-EDR-V1.0/LROLRC_0048C/INDEX/CUMINDEX.LBL\nTimestamp: 2023-10-10 15:30:56.195462\n\n\n\nindex.key\n\n'missions.lro.lroc.indexes.edr'\n\n\n\nindex.label_filename\n\nPath('CUMINDEX.LBL')\n\n\n\nindex.url\n\n'http://pds.lroc.asu.edu/data/LRO-L-LROC-2-EDR-V1.0/LROLRC_0048C/INDEX/CUMINDEX.LBL'\n\n\n\nindex.local_dir\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/lro/lroc/indexes/edr')\n\n\n\nif index.check_update and index.update_available:\n index.download()\n\nThe key can be provided * with or without the leading ‘missions’ * with or without the internal indexes level of the config file\n\nIndex(\"cassini.iss.moon_summary\")\n\nKey: missions.cassini.iss.indexes.moon_summary\nURL: https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl\nTimestamp: 2019-06-08 16:28:22\n\n\n\nIndex(\"cassini.iss.indexes.moon_summary\")\n\nKey: missions.cassini.iss.indexes.moon_summary\nURL: https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl\nTimestamp: 2019-06-08 16:28:22\n\n\n\nindex.isotimestamp\n\n'2023-10-10T15:30:56.195462'\n\n\n\nindex.mission_key\n\n'lro'\n\n\n\nindex.local_dir\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/lro/lroc/indexes/edr')\n\n\n\nindex.key_tokens[:2]\n\n['missions', 'lro']\n\n\n\nindex.instrument_key\n\n'lro.lroc'\n\n\n\nconfig.get_value(index.instrument_key)\n\n{'indexes': {'edr': {'url': 'http://pds.lroc.asu.edu/data/LRO-L-LROC-2-EDR-V1.0/LROLRC_0048C/INDEX/CUMINDEX.LBL', 'timestamp': '2023-10-10T15:30:56.195462'}}}\n\n\n\nindex = Index('mro.ctx.edr', check_update=False)\n\n\nindex.url\n\n''\n\n\n\nindex.label_filename\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/indexes/edr/cumindex.lbl')\n\n\n\nlist(index.local_dir.glob(\"*.[lL][bB][lL]\"))\n\n[Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/indexes/edr/cumindex.lbl')]" + }, + { + "objectID": "api/diviner.html", + "href": "api/diviner.html", + "title": "Diviner", + "section": "", + "text": "source\n\nDataManager\n\n DataManager (tstr)\n\nInitialize self. See help(type(self)) for accurate signature.\n\ndm = DataManager(\"2010010110\")\n\n\ndm.local_path\n\n\nsource\n\n\nread_l1a_data\n\n read_l1a_data (fname, nrows=None)\n\n\nsource\n\n\nL1AHeader\n\n L1AHeader ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\nsource\n\n\nparse_header_line\n\n parse_header_line (line)\n\nParse header lines.\n\n\n\ns = ’ a b c ’ parse_header_line(s) [‘a’, ‘b’, ‘c’] s = ’ a, b , c ’ parse_header_line(s) [‘a’, ‘b’, ‘c’]\n\n\n\n\ndm = DataManager(\"2010010110\")\n\n\ndm.download()\n\n\ndm.volume\n\n\ndm.url\n\n\ndf = pd.read_csv(\n dm.local_path,\n comment=\"#\",\n # names=L1AHeader.columns,\n na_values=\"-9999\",\n skipinitialspace=True,\n)\ndf.head()\n\n\npd.set_option(\"display.max_columns\", 200)\n\n\ndf.index\n\n\ndm.local_path\n\n\nsource\n\n\nget_data_path\n\n get_data_path (tstr)\n\n\nget_data_path(\"2017010110\")" + }, + { + "objectID": "api/cassini_uvis.html", + "href": "api/cassini_uvis.html", + "title": "UVIS", + "section": "", + "text": "get_index(\"cassini.uvis\", \"index\")\n\n\n\n\n\n\n\n\nFILE_NAME\nOBSERVATION_TYPE\nSTART_TIME\nSTOP_TIME\nTARGET_NAME\nDATA_SET_ID\nSPACECRAFT_CLOCK_START_COUNT\nSPACECRAFT_CLOCK_STOP_COUNT\nINTEGRATION_DURATION\nCOMPRESSION_TYPE\n...\nSUB_SOLAR_LONGITUDE\nSUB_SPACECRAFT_LATITUDE\nSUB_SPACECRAFT_LONGITUDE\nPHASE_ANGLE\nEMISSION_ANGLE\nSOLAR_INCIDENCE_ANGLE\nCENTRAL_BODY_DISTANCE\nDWELL_TIME\nH_LEVEL\nD_LEVEL\n\n\n\n\n0\n/COUVIS_0001/DATA/D1999_007/EUV1999_007_17_05.LBL\nUSTARE\n1999-01-07 17:05:01.949\n1999-01-07 17:08:37.949\n<NA>\nCO-J-UVIS-2-SPEC-V1.2\n1/1294420183.000\nUNK\n4.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n1\n/COUVIS_0001/DATA/D1999_007/EUV1999_007_17_08.LBL\nUSTARE\n1999-01-07 17:08:51.947\n1999-01-07 17:12:27.947\n<NA>\nCO-J-UVIS-2-SPEC-V1.2\n1/1294420413.000\nUNK\n4.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n2\n/COUVIS_0001/DATA/D1999_007/FUV1999_007_16_57.LBL\nUSTARE\n1999-01-07 16:57:21.952\n1999-01-07 17:00:57.952\n<NA>\nCO-J-UVIS-2-SPEC-V1.2\n1/1294419723.000\nUNK\n4.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n3\n/COUVIS_0001/DATA/D1999_007/FUV1999_007_17_01.LBL\nUSTARE\n1999-01-07 17:01:11.950\n1999-01-07 17:04:47.950\n<NA>\nCO-J-UVIS-2-SPEC-V1.2\n1/1294419953.000\nUNK\n4.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n4\n/COUVIS_0001/DATA/D1999_007/HDAC1999_007_16_31...\nUHDAC\n1999-01-07 16:31:07.962\n1999-01-07 16:31:11.962\n<NA>\nCO-J-UVIS-2-SSB-V1.2\n1/1294418149.000\nUNK\n-999.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n1\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n203240\n/COUVIS_0060/DATA/D2017_258/FUV2017_258_04_31.LBL\n<NA>\n2017-09-15 04:31:53.005\n2017-09-15 09:04:56.755\nSOLAR WIND\nCO-S-UVIS-2-CUBE-V1.4\n1/1884145299.160\nUNK\n8191.875\nSQRT_9\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n203241\n/COUVIS_0060/DATA/D2017_258/FUV2017_258_07_00.LBL\n<NA>\n2017-09-15 07:00:27.697\n2017-09-15 07:13:40.447\nSOLAR WIND\nCO-S-UVIS-2-SPEC-V1.4\n1/1884154214.096\nUNK\n2.625\nSQRT_9\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n203242\n/COUVIS_0060/DATA/D2017_258/FUV2017_258_07_15.LBL\n<NA>\n2017-09-15 07:15:04.442\n2017-09-15 10:31:51.692\nSOLAR WIND\nCO-S-UVIS-2-SPEC-V1.4\n1/1884155091.032\nUNK\n2.625\nSQRT_9\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n203243\n/COUVIS_0060/DATA/D2017_258/HDAC2017_258_02_14...\n<NA>\n2017-09-15 02:14:02.433\n2017-09-15 02:14:06.433\nSOLAR WIND\nCO-S-UVIS-2-SSB-V1.4\n1/1884137029.000\nUNK\n-999.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n1\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n\n\n203244\n/COUVIS_0060/DATA/D2017_258/HDAC2017_258_02_15...\n<NA>\n2017-09-15 02:15:25.058\n2017-09-15 02:17:33.058\nSOLAR WIND\nCO-S-UVIS-2-SSB-V1.4\n1/1884137111.160\nUNK\n-999.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n32\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n\n\n\n\n203245 rows × 28 columns\n\n\n\n\nsource\n\nDataManager\n\n DataManager (pid:str, skip_download:bool=False)\n\nInitialize self. See help(type(self)) for accurate signature.\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\npid\nstr\n\nProduct ID. If longer than PDS_ID, will be cut in attribute pds_id\n\n\nskip_download\nbool\nFalse\nskip trying to download\n\n\n\n\npid = \"EUV2002_198_03_26_54_UVIS_C33ST_SPICARAST002_PRIME\"\n\n\ndm = DataManager(pid)\n\n\ndm.raw_label_url\n\nURL('https://opus.pds-rings.seti.org/holdings/volumes/COUVIS_0xxx/COUVIS_0004/DATA/D2002_198/EUV2002_198_03_26.LBL')\n\n\n\nassert dm.pid == pid\n\nPDS data is only stored under the first 17 characters of any UVIS-internal product id.\n\nassert dm.pds_id == pid[:17]\n\nThe originally used product ID pid will be stored under original_pid.txt in the data folder:\n\ndm.original_pid_file\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/original_pid.txt')\n\n\nThe OPUS result file will be stored as a TOML file:\n\ndm.results_file\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/urls.toml')\n\n\n\ndm.download(overwrite=False)\n\nLocal files exists. Use `overwrite=True` to download fresh.\n\n\n\ndm.raw_data_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/EUV2002_198_03_26.DAT')\n\n\n\ndm.calib_corr_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/EUV2002_198_03_26_CAL_3.DAT')\n\n\n\nsource\n\n\nget_label_path\n\n get_label_path (pid)\n\n\nsource\n\n\nget_data_path\n\n get_data_path (pid, skip_download=False)\n\n\nget_data_path(pid)\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/EUV2002_198_03_26.DAT')\n\n\n\nget_label_path(pid)\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2002_198_03_26/EUV2002_198_03_26.LBL')\n\n\n\nsource\n\n\nget_user_guide\n\n get_user_guide ()\n\n\nget_user_guide()\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/uvis_user_guide.pdf')" + }, + { + "objectID": "api/pds.opusapi.html", + "href": "api/pds.opusapi.html", + "title": "OPUSAPI class", + "section": "", + "text": "source\n\nOPUS\n\n OPUS (silent=False)\n\nManage OPUS API requests.\n\nsource\n\n\nOPUSObsID\n\n OPUSObsID (obsid_data)\n\nManage observation IDs from OPUS responses.\n\nsource\n\n\nOPUSImageURL\n\n OPUSImageURL (jsonlist)\n\nManage URLS from the OPUS response.\n\nopus = OPUS()\n\n\nopus.query_image_id(\"FUV2003_363_00_22\")" + }, + { + "objectID": "api/pds.ctx_index.html", + "href": "api/pds.ctx_index.html", + "title": "CTX Index", + "section": "", + "text": "source\n\nCTXIndex\n\n CTXIndex ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\nctx = CTXIndex()\n\n\nctx.volumes_table\n\n\n\n\n\n\n\n\nName\nLast modified\n\n\n\n\n2\nmrox_0001/\n05-Jun-2007 10:15\n\n\n3\nmrox_0001_md5.txt\n10-Dec-2019 04:32\n\n\n4\nmrox_0002/\n05-Jun-2007 10:15\n\n\n5\nmrox_0002_md5.txt\n09-Dec-2019 19:14\n\n\n6\nmrox_0003/\n05-Jun-2007 10:15\n\n\n...\n...\n...\n\n\n9515\nmrox_4757_md5.txt\n15-Nov-2023 23:23\n\n\n9516\nmrox_4758/\n15-Nov-2023 23:08\n\n\n9517\nmrox_4758_md5.txt\n15-Nov-2023 23:23\n\n\n9518\nmrox_4759/\n15-Nov-2023 23:10\n\n\n9519\nmrox_4759_md5.txt\n15-Nov-2023 23:23\n\n\n\n\n9518 rows × 2 columns\n\n\n\n\nctx.latest_release_folder\n\n'mrox_4759/'\n\n\n\nctx.latest_release_number\n\n'4759'\n\n\n\nctx.latest_index_label_url\n\nURL('https://planetarydata.jpl.nasa.gov/img/data/mro/mars_reconnaissance_orbiter/ctx/mrox_4759/index/cumindex.lbl')" + }, + { + "objectID": "api/config.html", + "href": "api/config.html", + "title": "Config", + "section": "", + "text": "source" + }, + { + "objectID": "api/config.html#the-config-object", + "href": "api/config.html#the-config-object", + "title": "Config", + "section": "The Config() object", + "text": "The Config() object\nThe config module instantiates a config object from the Config class. Its attributes can be used to access several aspects relevant to the configuration of planetarypy. Using an object approach enables easy growth and nesting over time.\n\nconfig = Config(config_path=\"test_config.toml\")\n\n\nassert config.storage_root == Path.home() / \"planetarypy_data\"\n\n\nsource\n\nConfig.get_value\n\n Config.get_value (key:str)\n\nGet sub-dictionary by nested key.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\nkey\nstr\nA nested key in dotted format, e.g. cassini.uvis.indexes\n\n\nReturns\nstr\nReturning empty string if not existing, because Path(’’) is False which is handy (e.g. in ctx mod.)\n\n\n\n\nconfig.list_indexes(\"mro.hirise\")\n\n['dtm', 'edr', 'rdr']\n\n\n\nindex = \"missions.cassini.iss.indexes.moon_summary\"\n\n\nconfig.get_value(index)['url']\n\n'https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl'\n\n\n\nsource\n\n\nConfig.set_value\n\n Config.set_value (nested_key:str, value:Union[float,str], save:bool=True)\n\nSet value in sub-dic using dotted key.\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nnested_key\nstr\n\nA nested key in dotted format, e.g. cassini.uvis.ring_summary\n\n\nvalue\nUnion\n\nValue for the given key to be stored\n\n\nsave\nbool\nTrue\nSwitch to control writing out to disk\n\n\n\n\nsource\n\n\nConfig.save\n\n Config.save ()\n\nWrite the TOML doc to file.\n\nconfig.get_value(index)['url']\n\n'https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl'\n\n\n\nconfig.get_value(\"mro.ctx.datalevels\")['edr']['url']\n\n'https://pds-imaging.jpl.nasa.gov/data/mro/mars_reconnaissance_orbiter/ctx'\n\n\n\nsource\n\n\nConfig.ask_storage_root\n\n Config.ask_storage_root ()\n\nUse input() to ask user for the storage_root path.\nThe path will be stored in the TOML-dict and saved into existing config file at Class.path, either default or as given during init. storage_root attribute is set as well.\n\nconfig.missions\n\n['cassini', 'mro', 'lro', 'go']\n\n\n\nassert config.path.name == '.planetarypy_config.toml'\n\n\nconfig.list_instruments(\"cassini\")\n\n['iss', 'uvis']\n\n\n\nconfig.list_indexes(\"cassini.iss\")\n\n['index', 'inventory', 'moon_summary', 'ring_summary', 'saturn_summary']\n\n\n\nsource\n\n\nConfig.get_datalevels\n\n Config.get_datalevels (mission_instrument)\n\nReturn configured data levels available for an instrument.\nThis currently simply points to the indexes, assuming that everything that has an index is also its own datalevel. In case it ever is not, we can add more here.\n\n\n\n\nDetails\n\n\n\n\nmission_instrument\nmission.instrument code, e.g. mro.hirise\n\n\n\n\nconfig.get_datalevels(\"mro.hirise\")\n\n['dtm', 'edr', 'rdr']\n\n\n\nfrom nbdev import nbdev_export\n\nnbdev_export()" + }, + { + "objectID": "api/pds.lroc_index.html", + "href": "api/pds.lroc_index.html", + "title": "LROC Index", + "section": "", + "text": "EDR vs RDR etc.\nI cannot distinguish between different data levels for dynamic index URLs yet, as is required for LROC, so for now I only implement the EDR index, pretending it’s the only one!\n\nsource\n\nLROCIndex\n\n LROCIndex ()\n\nInitialize self. See help(type(self)) for accurate signature.\n\nlroc = LROCIndex()\n\n\nlroc.latest_release_folder\n\n'LROLRC_0056A/'\n\n\n\nlroc.latest_release_number\n\n'0056A'\n\n\n\nlroc.latest_index_label_url\n\nURL('https://pds.lroc.asu.edu/data/LRO-L-LROC-2-EDR-V1.0/LROLRC_0056A/INDEX/CUMINDEX.LBL')" + }, + { + "objectID": "api/geotools.html", + "href": "api/geotools.html", + "title": "Geotools", + "section": "", + "text": "ul = Upper Left\nlr = LowerRight\n\n\nsource\n\n\n\n pixel_to_meter (sample, line, geotransform, shift=False)\n\nprovide point in map projection coordinates.\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nsample\n\n\n\n\n\nline\n\n\n\n\n\ngeotransform\n\n\n\n\n\nshift\nbool\nFalse\n\n\n\nReturns\ntuple (x,y) coordinates in the projection of the dataset\n\n\n\n\n\n\nsource\n\n\n\n\n shift_to_center (x, y, geotransform)\n\n\nsource\n\n\n\n\n debug_srs (projection)\n\nCorrect wrong scale_factor in PolarStereographic data.\nSome PolarStereographic data have a 0 as a scale_factor in the projection (mostly MOLA), which is being corrected here. TODO: Check for being PolarStereographic before doing this!\n\nsource\n\n\n\n\n get_sun_angles (spicer, img)\n\nCalculate solar azimuth and incidence.\nBy requiring a spicer object for this function, it becomes independent from the solar system object where the calculations are made.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\nspicer\nspicer.Spicer\nneeds to be setup for time, but spoint is set from img.center in here.\n\n\nimg\ngeotools.ImgData\nThe image data of which the center point serves as the start point.\n\n\nReturns\ntuple(float, float)\nSolar azimuth, incidence [degrees]\n\n\n\n\nsource\n\n\n\n\n calculate_image_north_azimuth (img, zero='right')\n\n\nsource\n\n\n\n\n get_north_shifted_point (img, offset=0.001)\n\nIncreasing the latitude is a sure way of getting north.\n\nsource\n\n\n\n\n calculate_image_azimuth (origPoint, newPoint, zero='right')\n\nCalculate azimuth angle between 2 image points.\nBeware that this function calculates trigonometric angles. If the points are from an image that has (0, 0) in the upper left, this means that the angles increase clockwise. That is why, for example, for an HiRISE image, the return of this function matches the angle rotation definition for HiRISE data.\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\norigPoint\n\n\n\n\n\nnewPoint\n\n\n\n\n\nzero\nstr\nright\n\n\n\nReturns\nazimuth: \n\nAzimuth angle\n\n\n\n/home/runner/micromamba/envs/my-env/lib/python3.11/site-packages/fastcore/docscrape.py:225: UserWarning: Unknown section Requires\n else: warn(msg)\n\nsource\n\n\n\n\n Point (sample=None, line=None, x=None, y=None, lon=None, lat=None,\n geotrans=None, proj=None)\n\nPoint class to manage pixel and map points and their transformations.\n\nsource\n\n\n\n\n Window (ulPoint=None, lrPoint=None, centerPoint=None, width=None)\n\nclass to manage a window made of corner Points (objects of Point())\nwhen using width, only quadratic windows supported currently >>> p1 = Point(0, 1) >>> p2 = Point(10,20)\n\nsource\n\n\n\n\n ImgData (fname=None)\n\ndocstring for ImgData\n\n# todo: Fix missing MOLA class\n#| export\n# class CTX(ImgData):\n# \"\"\"docstring for CTX\"\"\"\n\n# def __init__(self, fname):\n# ImgData.__init__(self, fname)\n\n# def add_mola_contours(self):\n# self.window_coords_to_lonlat()\n# mola = MOLA()\n# mola.window = self.window.copy()\n# mola.window_coords_to_pixel()\n# mola.read_window(mola.window)\n# mola.data = mola.data - mola.data.mean()\n# fig = plt.figure(figsize=(10, 10))\n# ax = fig.add_subplot(111)\n# plt.gray()\n# ax.imshow(self.data, extent=self.window.get_extent(self.dataset))\n# CS = ax.contour(\n# mola.data,\n# 8,\n# cmap=cm.jet,\n# extent=self.window.get_extent(self.dataset),\n# origin=\"image\",\n# )\n# plt.clabel(CS, fontsize=13, inline=1)\n# ax.set_xlabel(\"Polar stereographic X [km]\")\n# ax.set_ylabel(\"Polar stereographic Y [km]\")\n# ax.set_title(\"CTX: \" + os.path.basename(self.fname))\n# self.ax = ax\n# plt.show()\n\n\n# def combine_ctx_and_mola(ctxFilename, ctxSample, ctxLine, ctxWidth):\n# \"\"\"combine CTX and MOLA data.\n#\n# MOLA and CTX data will be combined with these tools.\n# User shall provide line,sample center coordinate of CTX file ROI to\n# define distance in meters from southpole.\n# \"\"\"\n#\n# ctx = CTX(ctxFilename)\n# mola = MOLA()\n# ctxULsample, ctxULline, ctxLRsample, ctxLRline = \\\n# get_corners_from_center(ctxSample, ctxLine, ctxWidth)\n# ulX,ulY = get_coords_from_pixels(ctxDS, ctxULsample, ctxULline)\n# lrX,lrY = get_coords_from_pixels(ctxDS, ctxLRsample, ctxLRline)\n#\n# molaULsample,molaULline = get_pixels_from_coords(molaDS,ulX,ulY)\n# molaLRsample,molaLRline = get_pixels_from_coords(molaDS,lrX,lrY)\n# print(ctxULsample, ctxULline, ctxLRsample, ctxLRline)\n# print(molaULsample, molaULline,molaLRsample, molaLRline)\n# print(ulX,ulY,lrX,lrY)\n# ctxData = ctxDS.ReadAsArray(ctxULsample,ctxULline,ctxWidth,ctxWidth)\n# molaData = molaDS.ReadAsArray(int(molaULsample)+1,int(molaULline),\n# int(molaLRsample - molaULsample),\n# int(molaLRline - molaULline))\n#\n# molaData = molaData - molaData.mean()\n#\n# # x = np.arange(ulX,lrX)\n# # y = np.arange(lrY,ulY)\n# # X, Y = np.meshgrid(x,y)\n# # plotting\n# fig = plt.figure(figsize=(10,10))\n# ax = fig.add_subplot(111)\n# plt.gray()\n# ax.imshow(ctxData, extent=(min(ulX,lrX),max(ulX,lrX),min(ulY,lrY),\n# max(ulY,lrY)))\n# CS = ax.contour(molaData, 20, cmap = cm.jet,\n# extent=(min(ulX,lrX),\n# max(ulX,lrX),\n# min(ulY,lrY),\n# max(ulY,lrY)),\n# origin='image' )\n# plt.clabel(CS,fontsize=9, inline=1)\n# plt.show()\n\n# def main(argv=None):\n# \"\"\"docstring for main\"\"\"\n# from mayavi import mlab\n\n# if argv is None:\n# argv = sys.argv\n\n# x1 = x2 = y1 = y2 = 0\n# fname = \"\"\n# try:\n# fname = argv[1]\n# x1, x2, y1, y2 = [int(i) for i in argv[2:]]\n# except:\n# print(\"Usage: {0} fname x1 x2 y1 y2\".format(argv[0]))\n\n# print(x1, x2, y1, y2)\n# ds = gdal.Open(fname)\n# band = ds.GetRasterBand(1)\n# STORED_VALUE = band.ReadAsArray(x1, y1, x2 - x1, y2 - y1)\n# ds = 0\n\n# # PDS label infos:\n# SCALING_FACTOR = 0.25\n# OFFSET = -8000\n# topo = (STORED_VALUE * SCALING_FACTOR) + OFFSET\n# mlab.surf(topo, warp_scale=1 / 115.0, vmin=1700)\n# mlab.colorbar(orientation=\"vertical\", title=\"Height [m]\", label_fmt=\"%4.0f\")\n# mlab.show()" + }, + { + "objectID": "api/geotools.html#abbreviations", + "href": "api/geotools.html#abbreviations", + "title": "Geotools", + "section": "", + "text": "ul = Upper Left\nlr = LowerRight\n\n\nsource\n\n\n\n pixel_to_meter (sample, line, geotransform, shift=False)\n\nprovide point in map projection coordinates.\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nsample\n\n\n\n\n\nline\n\n\n\n\n\ngeotransform\n\n\n\n\n\nshift\nbool\nFalse\n\n\n\nReturns\ntuple (x,y) coordinates in the projection of the dataset\n\n\n\n\n\n\nsource\n\n\n\n\n shift_to_center (x, y, geotransform)\n\n\nsource\n\n\n\n\n debug_srs (projection)\n\nCorrect wrong scale_factor in PolarStereographic data.\nSome PolarStereographic data have a 0 as a scale_factor in the projection (mostly MOLA), which is being corrected here. TODO: Check for being PolarStereographic before doing this!\n\nsource\n\n\n\n\n get_sun_angles (spicer, img)\n\nCalculate solar azimuth and incidence.\nBy requiring a spicer object for this function, it becomes independent from the solar system object where the calculations are made.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\nspicer\nspicer.Spicer\nneeds to be setup for time, but spoint is set from img.center in here.\n\n\nimg\ngeotools.ImgData\nThe image data of which the center point serves as the start point.\n\n\nReturns\ntuple(float, float)\nSolar azimuth, incidence [degrees]\n\n\n\n\nsource\n\n\n\n\n calculate_image_north_azimuth (img, zero='right')\n\n\nsource\n\n\n\n\n get_north_shifted_point (img, offset=0.001)\n\nIncreasing the latitude is a sure way of getting north.\n\nsource\n\n\n\n\n calculate_image_azimuth (origPoint, newPoint, zero='right')\n\nCalculate azimuth angle between 2 image points.\nBeware that this function calculates trigonometric angles. If the points are from an image that has (0, 0) in the upper left, this means that the angles increase clockwise. That is why, for example, for an HiRISE image, the return of this function matches the angle rotation definition for HiRISE data.\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\norigPoint\n\n\n\n\n\nnewPoint\n\n\n\n\n\nzero\nstr\nright\n\n\n\nReturns\nazimuth: \n\nAzimuth angle\n\n\n\n/home/runner/micromamba/envs/my-env/lib/python3.11/site-packages/fastcore/docscrape.py:225: UserWarning: Unknown section Requires\n else: warn(msg)\n\nsource\n\n\n\n\n Point (sample=None, line=None, x=None, y=None, lon=None, lat=None,\n geotrans=None, proj=None)\n\nPoint class to manage pixel and map points and their transformations.\n\nsource\n\n\n\n\n Window (ulPoint=None, lrPoint=None, centerPoint=None, width=None)\n\nclass to manage a window made of corner Points (objects of Point())\nwhen using width, only quadratic windows supported currently >>> p1 = Point(0, 1) >>> p2 = Point(10,20)\n\nsource\n\n\n\n\n ImgData (fname=None)\n\ndocstring for ImgData\n\n# todo: Fix missing MOLA class\n#| export\n# class CTX(ImgData):\n# \"\"\"docstring for CTX\"\"\"\n\n# def __init__(self, fname):\n# ImgData.__init__(self, fname)\n\n# def add_mola_contours(self):\n# self.window_coords_to_lonlat()\n# mola = MOLA()\n# mola.window = self.window.copy()\n# mola.window_coords_to_pixel()\n# mola.read_window(mola.window)\n# mola.data = mola.data - mola.data.mean()\n# fig = plt.figure(figsize=(10, 10))\n# ax = fig.add_subplot(111)\n# plt.gray()\n# ax.imshow(self.data, extent=self.window.get_extent(self.dataset))\n# CS = ax.contour(\n# mola.data,\n# 8,\n# cmap=cm.jet,\n# extent=self.window.get_extent(self.dataset),\n# origin=\"image\",\n# )\n# plt.clabel(CS, fontsize=13, inline=1)\n# ax.set_xlabel(\"Polar stereographic X [km]\")\n# ax.set_ylabel(\"Polar stereographic Y [km]\")\n# ax.set_title(\"CTX: \" + os.path.basename(self.fname))\n# self.ax = ax\n# plt.show()\n\n\n# def combine_ctx_and_mola(ctxFilename, ctxSample, ctxLine, ctxWidth):\n# \"\"\"combine CTX and MOLA data.\n#\n# MOLA and CTX data will be combined with these tools.\n# User shall provide line,sample center coordinate of CTX file ROI to\n# define distance in meters from southpole.\n# \"\"\"\n#\n# ctx = CTX(ctxFilename)\n# mola = MOLA()\n# ctxULsample, ctxULline, ctxLRsample, ctxLRline = \\\n# get_corners_from_center(ctxSample, ctxLine, ctxWidth)\n# ulX,ulY = get_coords_from_pixels(ctxDS, ctxULsample, ctxULline)\n# lrX,lrY = get_coords_from_pixels(ctxDS, ctxLRsample, ctxLRline)\n#\n# molaULsample,molaULline = get_pixels_from_coords(molaDS,ulX,ulY)\n# molaLRsample,molaLRline = get_pixels_from_coords(molaDS,lrX,lrY)\n# print(ctxULsample, ctxULline, ctxLRsample, ctxLRline)\n# print(molaULsample, molaULline,molaLRsample, molaLRline)\n# print(ulX,ulY,lrX,lrY)\n# ctxData = ctxDS.ReadAsArray(ctxULsample,ctxULline,ctxWidth,ctxWidth)\n# molaData = molaDS.ReadAsArray(int(molaULsample)+1,int(molaULline),\n# int(molaLRsample - molaULsample),\n# int(molaLRline - molaULline))\n#\n# molaData = molaData - molaData.mean()\n#\n# # x = np.arange(ulX,lrX)\n# # y = np.arange(lrY,ulY)\n# # X, Y = np.meshgrid(x,y)\n# # plotting\n# fig = plt.figure(figsize=(10,10))\n# ax = fig.add_subplot(111)\n# plt.gray()\n# ax.imshow(ctxData, extent=(min(ulX,lrX),max(ulX,lrX),min(ulY,lrY),\n# max(ulY,lrY)))\n# CS = ax.contour(molaData, 20, cmap = cm.jet,\n# extent=(min(ulX,lrX),\n# max(ulX,lrX),\n# min(ulY,lrY),\n# max(ulY,lrY)),\n# origin='image' )\n# plt.clabel(CS,fontsize=9, inline=1)\n# plt.show()\n\n# def main(argv=None):\n# \"\"\"docstring for main\"\"\"\n# from mayavi import mlab\n\n# if argv is None:\n# argv = sys.argv\n\n# x1 = x2 = y1 = y2 = 0\n# fname = \"\"\n# try:\n# fname = argv[1]\n# x1, x2, y1, y2 = [int(i) for i in argv[2:]]\n# except:\n# print(\"Usage: {0} fname x1 x2 y1 y2\".format(argv[0]))\n\n# print(x1, x2, y1, y2)\n# ds = gdal.Open(fname)\n# band = ds.GetRasterBand(1)\n# STORED_VALUE = band.ReadAsArray(x1, y1, x2 - x1, y2 - y1)\n# ds = 0\n\n# # PDS label infos:\n# SCALING_FACTOR = 0.25\n# OFFSET = -8000\n# topo = (STORED_VALUE * SCALING_FACTOR) + OFFSET\n# mlab.surf(topo, warp_scale=1 / 115.0, vmin=1700)\n# mlab.colorbar(orientation=\"vertical\", title=\"Height [m]\", label_fmt=\"%4.0f\")\n# mlab.show()" + }, + { + "objectID": "api/utils.html", + "href": "api/utils.html", + "title": "Utils", + "section": "", + "text": "First, we define the different format strings these utils convert from and to.\nAn identifier with xxx_dt_format_xxx in its name signifies a full datetime format as compared to dates only.\n\n\nWhat we call NASA data, is the often used YYYY-JJJ based format in the Planetary Data System identifying dates via the running number of the day in the year, e.g. “2010-240”.\n\nsource\n\n\n\n\n nasa_time_to_datetime (inputstr)\n\nUser function to convert all kinds of NASA PDS datestrings with day_of_year into datetimes.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\ninputstr\n\ninputstr of format YYYY-jjj, YYYY-jjjTHH:MM:SS or YYYY-jjjTHH:MM:SS.ffffff\n\n\nReturns\ndatetime\n\n\n\n\nExample dates and times to test:\n\nnasa_date = \"2010-110\"\niso_date = \"2010-4-20\"\nnasa_datetime = \"2010-110T10:12:14\"\nnasa_datetime_with_ms = nasa_datetime + \".123000\"\niso_datetime = \"2010-04-20T10:12:14\"\niso_datetime_with_ms = iso_datetime + \".123000\"\nnasa_times = [nasa_date, nasa_datetime, nasa_datetime_with_ms]\niso_times = [iso_date, iso_datetime, iso_datetime_with_ms]\n\n\nassert nasa_time_to_datetime(nasa_date) == dt.datetime(2010, 4, 20, 0, 0)\n\n\nassert nasa_time_to_datetime(nasa_datetime) == dt.datetime(2010, 4, 20, 10, 12, 14)\n\n\nassert nasa_time_to_datetime(nasa_datetime_with_ms) == dt.datetime(2010, 4, 20, 10, 12, 14, 123000)\n\n\nsource\n\n\n\n\n nasa_time_to_iso (inputstr:str, with_hours:bool=False)\n\nConvert the day-number based NASA datetime format to ISO\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\ninputstr\nstr\n\n\n\n\nwith_hours\nbool\nFalse\nSwitch if return is wanted with hours (i.e. isoformat)\n\n\nReturns\nstr\n\nDatestring in ISO-format.\n\n\n\nConversions to ISO format, but not providing hours if they are not in input:\n\nfor t in nasa_times:\n print(\"Input:\", t)\n print(nasa_time_to_iso(t))\n\nInput: 2010-110\n2010-04-20\nInput: 2010-110T10:12:14\n2010-04-20T10:12:14\nInput: 2010-110T10:12:14.123000\n2010-04-20T10:12:14.123000\n\n\nIf hours are wanted in the isostring, use with_hours=True:\n\nfor t in nasa_times:\n print(\"Input:\", t)\n print(nasa_time_to_iso(t, with_hours=True))\n\nInput: 2010-110\n2010-04-20T00:00:00\nInput: 2010-110T10:12:14\n2010-04-20T10:12:14\nInput: 2010-110T10:12:14.123000\n2010-04-20T10:12:14.123000\n\n\n\nassert nasa_time_to_iso(nasa_date, with_hours=True) == \"2010-04-20T00:00:00\"\nassert nasa_time_to_iso(nasa_date) == \"2010-04-20\"\n\n\n\n\nAgain, with NASA-format, we mean the ofen used (in PDS and mission files) YYYY-JJJ format, e.g. “2010-240”.\n\nsource\n\n\n\n\n iso_to_nasa_time (inputstr:str)\n\nConvert iso date to day-number based NASA date.\n\n\n\n\nType\nDetails\n\n\n\n\ninputstr\nstr\nDate string of the form Y-m-d\n\n\nReturns\nstr\nDatestring in NASA standard yyyy-jjj\n\n\n\n\nsource\n\n\n\n\n iso_to_nasa_datetime (dtimestr:str)\n\nConvert iso datetime to day-number based NASA datetime.\n\n\n\n\nType\nDetails\n\n\n\n\ndtimestr\nstr\nDatetime string of the form yyyy-mm-ddTHH-MM-SS\n\n\n\n\nfor t in iso_times:\n print(\"Input:\", t)\n print(iso_to_nasa_time(t))\n\nInput: 2010-4-20\n2010-110\nInput: 2010-04-20T10:12:14\n2010-110T10:12:14\nInput: 2010-04-20T10:12:14.123000\n2010-110T10:12:14.123000\n\n\n\nassert iso_to_nasa_time(iso_date) == nasa_date\n\n\nassert nasa_time_to_iso(nasa_datetime) == iso_datetime\nassert nasa_time_to_iso(nasa_datetime_with_ms) == iso_datetime_with_ms\n\n\nassert iso_to_nasa_time(iso_datetime) == nasa_datetime\nassert iso_to_nasa_time(iso_datetime_with_ms) == nasa_datetime_with_ms\n\n\nsource\n\n\n\n\n replace_all_nasa_times (df:pandas.core.frame.DataFrame)\n\nFind all NASA times in dataframe and replace with ISO.\nChanges will be implemented on incoming dataframe!\nThis will be done for all columns with the word TIME in the column name.\n\n\n\n\nType\nDetails\n\n\n\n\ndf\nDataFrame\nDataFrame with NASA time columns" + }, + { + "objectID": "api/utils.html#time-format-strings", + "href": "api/utils.html#time-format-strings", + "title": "Utils", + "section": "", + "text": "First, we define the different format strings these utils convert from and to.\nAn identifier with xxx_dt_format_xxx in its name signifies a full datetime format as compared to dates only.\n\n\nWhat we call NASA data, is the often used YYYY-JJJ based format in the Planetary Data System identifying dates via the running number of the day in the year, e.g. “2010-240”.\n\nsource\n\n\n\n\n nasa_time_to_datetime (inputstr)\n\nUser function to convert all kinds of NASA PDS datestrings with day_of_year into datetimes.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\ninputstr\n\ninputstr of format YYYY-jjj, YYYY-jjjTHH:MM:SS or YYYY-jjjTHH:MM:SS.ffffff\n\n\nReturns\ndatetime\n\n\n\n\nExample dates and times to test:\n\nnasa_date = \"2010-110\"\niso_date = \"2010-4-20\"\nnasa_datetime = \"2010-110T10:12:14\"\nnasa_datetime_with_ms = nasa_datetime + \".123000\"\niso_datetime = \"2010-04-20T10:12:14\"\niso_datetime_with_ms = iso_datetime + \".123000\"\nnasa_times = [nasa_date, nasa_datetime, nasa_datetime_with_ms]\niso_times = [iso_date, iso_datetime, iso_datetime_with_ms]\n\n\nassert nasa_time_to_datetime(nasa_date) == dt.datetime(2010, 4, 20, 0, 0)\n\n\nassert nasa_time_to_datetime(nasa_datetime) == dt.datetime(2010, 4, 20, 10, 12, 14)\n\n\nassert nasa_time_to_datetime(nasa_datetime_with_ms) == dt.datetime(2010, 4, 20, 10, 12, 14, 123000)\n\n\nsource\n\n\n\n\n nasa_time_to_iso (inputstr:str, with_hours:bool=False)\n\nConvert the day-number based NASA datetime format to ISO\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\ninputstr\nstr\n\n\n\n\nwith_hours\nbool\nFalse\nSwitch if return is wanted with hours (i.e. isoformat)\n\n\nReturns\nstr\n\nDatestring in ISO-format.\n\n\n\nConversions to ISO format, but not providing hours if they are not in input:\n\nfor t in nasa_times:\n print(\"Input:\", t)\n print(nasa_time_to_iso(t))\n\nInput: 2010-110\n2010-04-20\nInput: 2010-110T10:12:14\n2010-04-20T10:12:14\nInput: 2010-110T10:12:14.123000\n2010-04-20T10:12:14.123000\n\n\nIf hours are wanted in the isostring, use with_hours=True:\n\nfor t in nasa_times:\n print(\"Input:\", t)\n print(nasa_time_to_iso(t, with_hours=True))\n\nInput: 2010-110\n2010-04-20T00:00:00\nInput: 2010-110T10:12:14\n2010-04-20T10:12:14\nInput: 2010-110T10:12:14.123000\n2010-04-20T10:12:14.123000\n\n\n\nassert nasa_time_to_iso(nasa_date, with_hours=True) == \"2010-04-20T00:00:00\"\nassert nasa_time_to_iso(nasa_date) == \"2010-04-20\"\n\n\n\n\nAgain, with NASA-format, we mean the ofen used (in PDS and mission files) YYYY-JJJ format, e.g. “2010-240”.\n\nsource\n\n\n\n\n iso_to_nasa_time (inputstr:str)\n\nConvert iso date to day-number based NASA date.\n\n\n\n\nType\nDetails\n\n\n\n\ninputstr\nstr\nDate string of the form Y-m-d\n\n\nReturns\nstr\nDatestring in NASA standard yyyy-jjj\n\n\n\n\nsource\n\n\n\n\n iso_to_nasa_datetime (dtimestr:str)\n\nConvert iso datetime to day-number based NASA datetime.\n\n\n\n\nType\nDetails\n\n\n\n\ndtimestr\nstr\nDatetime string of the form yyyy-mm-ddTHH-MM-SS\n\n\n\n\nfor t in iso_times:\n print(\"Input:\", t)\n print(iso_to_nasa_time(t))\n\nInput: 2010-4-20\n2010-110\nInput: 2010-04-20T10:12:14\n2010-110T10:12:14\nInput: 2010-04-20T10:12:14.123000\n2010-110T10:12:14.123000\n\n\n\nassert iso_to_nasa_time(iso_date) == nasa_date\n\n\nassert nasa_time_to_iso(nasa_datetime) == iso_datetime\nassert nasa_time_to_iso(nasa_datetime_with_ms) == iso_datetime_with_ms\n\n\nassert iso_to_nasa_time(iso_datetime) == nasa_datetime\nassert iso_to_nasa_time(iso_datetime_with_ms) == nasa_datetime_with_ms\n\n\nsource\n\n\n\n\n replace_all_nasa_times (df:pandas.core.frame.DataFrame)\n\nFind all NASA times in dataframe and replace with ISO.\nChanges will be implemented on incoming dataframe!\nThis will be done for all columns with the word TIME in the column name.\n\n\n\n\nType\nDetails\n\n\n\n\ndf\nDataFrame\nDataFrame with NASA time columns" + }, + { + "objectID": "api/utils.html#network-utils", + "href": "api/utils.html#network-utils", + "title": "Utils", + "section": "Network utils", + "text": "Network utils\n\nsource\n\nhave_internet\n\n have_internet ()\n\nFastest way to check for active internet connection.\nFrom https://stackoverflow.com/a/29854274/680232\n\nsource\n\n\nurl_retrieve\n\n url_retrieve (url:str, outfile:str, chunk_size:int=4096, user:str=None,\n passwd:str=None)\n\nImproved urlretrieve with progressbar, timeout and chunker.\nThis downloader has built-in progress bar using tqdm and using the requests package it improves standard urllib behavior by adding time-out capability.\nI tested different chunk_sizes and most of the time 128 was actually fastest, YMMV.\nInspired by https://stackoverflow.com/a/61575758/680232\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nurl\nstr\n\nThe URL to download\n\n\noutfile\nstr\n\nThe path where to store the downloaded file.\n\n\nchunk_size\nint\n4096\ndef chunk size for the request.iter_content call\n\n\nuser\nstr\nNone\nif provided, create HTTPBasicAuth object\n\n\npasswd\nstr\nNone\nif provided, create HTTPBasicAuth object\n\n\n\n\nsource\n\n\ncheck_url_exists\n\n check_url_exists (url)\n\n\nsource\n\n\nget_remote_timestamp\n\n get_remote_timestamp (url:str)\n\nGet the timestamp of a remote file.\nUseful for checking if there’s an updated file available.\n\n\n\n\nType\nDetails\n\n\n\n\nurl\nstr\nURL to check timestamp for\n\n\nReturns\ndatetime\n\n\n\n\n\nsource\n\n\nparse_http_date\n\n parse_http_date (text:str)\n\nParse date string retrieved via urllib.request.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\ntext\nstr\ndatestring from urllib.request\n\n\nReturns\ndatetime\ndt.datetime object from given datetime string\n\n\n\n\nhave_internet()\n\nTrue" + }, + { + "objectID": "api/utils.html#image-processing-helpers", + "href": "api/utils.html#image-processing-helpers", + "title": "Utils", + "section": "Image processing helpers", + "text": "Image processing helpers\n\nsource\n\nfile_variations\n\n file_variations (filename:Union[str,pathlib.Path], extensions:list)\n\nCreate a variation of file names.\nGenerate a list of variations on a filename by replacing the extension with the provided list.\nAdapted from T. Olsens `file_variations of the pysis module for using pathlib.\n\n\n\n\nType\nDetails\n\n\n\n\nfilename\nUnion\nThe original filename to use as a base.\n\n\nextensions\nlist\n\n\n\nReturns\nlist\nlist of Paths\n\n\n\n\nsource\n\n\nget_gdal_center_coords\n\n get_gdal_center_coords (imgpath:Union[str,pathlib.Path])\n\nGet center rows/cols pixel coordinate for GDAL-readable dataset.\nCheck CLI gdalinfo --formats to see all formats that GDAL can open.\n\n\n\n\nType\nDetails\n\n\n\n\nimgpath\nUnion\nPath to raster image that is readable by GDLA\n\n\nReturns\nTuple\ncenter row/col coordinates.\n\n\n\n\nsource\n\n\nheight_from_shadow\n\n height_from_shadow (shadow_in_pixels:float, sun_elev:float)\n\nCalculate height of an object from its shadow length.\nNote, that your image might have been binned. You need to correct shadow_in_pixels for that.\n\n\n\n\nType\nDetails\n\n\n\n\nshadow_in_pixels\nfloat\nMeasured length of shadow in pixels\n\n\nsun_elev\nfloat\nAnge of sun over horizon in degrees\n\n\nReturns\nfloat\nHeight [meter]\n\n\n\n\nfname = \"abc.txt\"\n\n\nextensions = \".cub .cal.cub .map.cal.cub\".split()\n\n\nfile_variations(fname, extensions)\n\n[Path('abc.cub'), Path('abc.cal.cub'), Path('abc.map.cal.cub')]\n\n\n\nassert len(extensions) == len(file_variations(fname, extensions))" + }, + { + "objectID": "api/utils.html#isis-helpers", + "href": "api/utils.html#isis-helpers", + "title": "Utils", + "section": "ISIS helpers", + "text": "ISIS helpers\n\nsource\n\ncatch_isis_error\n\n catch_isis_error (func)\n\ncan be used as decorator for any ISIS function" + }, + { + "objectID": "api/utils.html#notebook-tools", + "href": "api/utils.html#notebook-tools", + "title": "Utils", + "section": "Notebook tools", + "text": "Notebook tools\n\nsource\n\nfix_nb_metadata_folder\n\n fix_nb_metadata_folder (folder)\n\n\nsource\n\n\nfix_nb_metadata\n\n fix_nb_metadata (fpath)\n\n\nfrom nbdev import nbdev_export\n\nnbdev_export()" + }, + { + "objectID": "api/exceptions.html", + "href": "api/exceptions.html", + "title": "Package exceptions", + "section": "", + "text": "source\n\nMissingParameterError\n\n MissingParameterError (txt)\n\nBase class for exceptions in this module.\n\nsource\n\n\nSpiceError\n\n SpiceError (function)\n\nBase class for exceptions in this module.\n\nsource\n\n\nObserverNotSetError\nBase class for exceptions in this module.\n\nsource\n\n\nSPointNotSetError\nBase class for exceptions in this module.\n\nsource\n\n\nSpicerError\nBase class for exceptions in this module.\n\nsource\n\n\nGeoTransformNotSetError\n\n GeoTransformNotSetError (where, what)\n\nException raised for errors in the input of transformations.\nAttributes: where – where is something missing what – what is missing\n\nsource\n\n\nProjectionNotSetError\n\n ProjectionNotSetError (where, what)\n\nException raised for errors in the input of transformations.\nAttributes: where – where is something missing what – what is missing\n\nsource\n\n\nSomethingNotSetError\n\n SomethingNotSetError (where, what)\n\nException raised for errors in the input of transformations.\nAttributes: where – where is something missing what – what is missing\n\nsource\n\n\nError\nBase class for exceptions in this module." + }, + { + "objectID": "api/hirise.html", + "href": "api/hirise.html", + "title": "HiRISE", + "section": "", + "text": "source\n\nOBSID\n\n OBSID (obsid:str)\n\nManage HiRISE observation ids.\nFor example PSP_003092_0985. phase is set to PSP for orbits < 11000, no setting required.\n\n\n\n\nType\nDetails\n\n\n\n\nobsid\nstr\ne.g. PSP_003092_0985\n\n\n\n\nobsid = OBSID(\"PSP_003092_0985\")\nobsid\n\nPSP_003092_0985\n\n\n\nassert obsid.orbit == \"003092\"\n\n\nassert obsid.targetcode == \"0985\"\n\n\nassert obsid.phase == \"PSP\"\n\n\nassert obsid.upper_orbit_folder == \"ORB_003000_003099\"\n\n\nassert obsid.storage_path_stem == \"PSP/ORB_003000_003099/PSP_003092_0985\"\n\n\nsource\n\n\nProductPathfinder\n\n ProductPathfinder (initstr:str, check_url:bool=True)\n\nDetermine paths and URLs for HiRISE RDR products (also EXTRAS.)\nWe use the PDS definition of PRODUCT_ID here, e.g. PSP_003092_0985_RED.\nAttributes jp2_path and label_path get you the official RDR mosaic product, with kind steering if you get the COLOR or the RED product. All other properties go to the RDR/EXTRAS folder. The “PDS” part of the path is handled in the OBSID class.\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\ninitstr\nstr\n\nPRODUCT_ID string, e.g. PSP_003092_0985_RED\n\n\ncheck_url\nbool\nTrue\nfor performance, the user might not want the url check\n\n\n\n\npid = \"ESP_039983_1390_RED\"\n\n\nppf = ProductPathfinder(pid)\n\n\nppf.storage_stem\n\n'ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED'\n\n\n\nppf.local_label_path.exists()\n\nFalse\n\n\n\nppf.edr_storage_stem\n\nPath('EDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED')\n\n\n\nppf.download_label()\n\n\n\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_039983_1390/ESP_039983_1390_RED.LBL')\n\n\n\nppf.go_to_homepage()\n\n4;1HPS connection to uahirise.org[22;24H Getting https://uahirise.org/ESP_039983_1390 \n\n\n\nppf.homepage\n\n'https://uahirise.org/ESP_039983_1390'\n\n\n\nassert isinstance(ppf.obsid, OBSID)\n\n\nassert ppf.kind == \"RED\"\n\n\nassert ppf.label_fname == \"ESP_039983_1390_RED.LBL\"\n\n\nassert ppf.label_path == Path('RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.LBL')\n\n\n\nPaths and URLS\nEach xxx_path attribute is also available as xxx_url, and accessing the _url parameter immediately checks for its existence on the server.\n\n# little helper to show attributes inside ProductPathfinder object...\ndef _isprop(v):\n return isinstance(v, property)\n\n\ndef _get_properties(classname, substring):\n names = [name for (name, value) in inspect.getmembers(classname, _isprop) if name.endswith(substring)]\n return names\n\n\n# Here I'm checking that all _url versions work, each access checks for existence:\nfor prop in _get_properties(ProductPathfinder, \"_path\"):\n if prop.startswith(\"local_label\"):\n continue\n print(prop)\n print(getattr(ppf, prop))\n urlattr = prop.replace(\"_path\", \"_url\")\n print(urlattr)\n url = getattr(ppf, urlattr)\n print(url)\n\nabrowse_path\nEXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.abrowse.jpg\nabrowse_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.abrowse.jpg\nbrowse_path\nEXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.browse.jpg\nbrowse_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.browse.jpg\njp2_path\nRDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.JP2\njp2_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.JP2\nlabel_path\nRDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.LBL\nlabel_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.LBL\nnomap_browse_path\nEXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.browse.jpg\nnomap_browse_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.browse.jpg\nnomap_jp2_path\nEXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.JP2\nnomap_jp2_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.JP2\nnomap_thumbnail_path\nEXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.thumb.jpg\nnomap_thumbnail_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.thumb.jpg\nquicklook_path\nEXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.QLOOK.JP2\nquicklook_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.QLOOK.JP2\nthumbnail_path\nEXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.thumb.jpg\nthumbnail_url\nhttps://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.thumb.jpg\n\n\n\nppf.storage_stem\n\n'ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED'\n\n\n\nppf.nomap_browse_url\n\nURL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.browse.jpg')\n\n\n\nppf.abrowse_url\n\nURL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.abrowse.jpg')\n\n\n\nppf.nomap_jp2_path\n\n'EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED.NOMAP.JP2'\n\n\n\nsource\n\n\nCOLOR_PRODUCT\n\n COLOR_PRODUCT (obsid)\n\nInitialize self. See help(type(self)) for accurate signature.\n\nsource\n\n\nRGB_NOMAP\n\n RGB_NOMAP (obsid)\n\nInitialize self. See help(type(self)) for accurate signature.\n\nobsid = \"ESP_039983_1390\"\n\n\nrgb = RGB_NOMAP(obsid)\n\n\nrgb.obsid\n\n'ESP_039983_1390'\n\n\n\nrgb.product_id\n\n'ESP_039983_1390_RGB'\n\n\n\nrgb.meta.head()\n\nvolume_id MROHR_0001\nfile_name_specification RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_...\ninstrument_host_id MRO\ninstrument_id HIRISE\nobservation_id ESP_039983_1390\nName: 75508, dtype: object\n\n\n\nrgb.local_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_039983_1390/ESP_039983_1390_RGB.NOMAP.JP2')\n\n\n\nrgb.url\n\nURL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RGB.NOMAP.JP2')\n\n\n\nrgb.download(overwrite=False)\n\nFile exists. Use `overwrite=True` to download fresh.\n\n\n\nrgb.read()\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<xarray.DataArray (band: 3, y: 20000, x: 2024)>\ndask.array<open_rasterio-3e88685e58afe3daaabd13b6ff29c609<this-array>, shape=(3, 20000, 2024), dtype=uint16, chunksize=(1, 2024, 2024), chunktype=numpy.ndarray>\nCoordinates:\n * band (band) int64 1 2 3\n * x (x) float64 0.5 1.5 2.5 3.5 ... 2.022e+03 2.022e+03 2.024e+03\n * y (y) float64 0.5 1.5 2.5 3.5 4.5 ... 2e+04 2e+04 2e+04 2e+04\n spatial_ref int64 0\nAttributes:\n scale_factor: 1.0\n add_offset: 0.0xarray.DataArrayband: 3y: 20000x: 2024dask.array<chunksize=(1, 2024, 2024), meta=np.ndarray>\n\n\n\n\n\n\n\n\n\n\n\nArray\nChunk\n\n\n\n\nBytes\n231.63 MiB\n7.81 MiB\n\n\nShape\n(3, 20000, 2024)\n(1, 2024, 2024)\n\n\nDask graph\n30 chunks in 2 graph layers\n\n\nData type\nuint16 numpy.ndarray\n\n\n\n\n\n\n\nCoordinates: (4)band(band)int641 2 3array([1, 2, 3])x(x)float640.5 1.5 2.5 ... 2.022e+03 2.024e+03array([5.0000e-01, 1.5000e+00, 2.5000e+00, ..., 2.0215e+03, 2.0225e+03,\n 2.0235e+03])y(y)float640.5 1.5 2.5 ... 2e+04 2e+04 2e+04array([5.00000e-01, 1.50000e+00, 2.50000e+00, ..., 1.99975e+04, 1.99985e+04,\n 1.99995e+04])spatial_ref()int640GeoTransform :0.0 1.0 0.0 0.0 0.0 1.0array(0)Indexes: (3)bandPandasIndexPandasIndex(Int64Index([1, 2, 3], dtype='int64', name='band'))xPandasIndexPandasIndex(Float64Index([ 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,\n 8.5, 9.5,\n ...\n 2014.5, 2015.5, 2016.5, 2017.5, 2018.5, 2019.5, 2020.5, 2021.5,\n 2022.5, 2023.5],\n dtype='float64', name='x', length=2024))yPandasIndexPandasIndex(Float64Index([ 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5,\n 7.5, 8.5, 9.5,\n ...\n 19990.5, 19991.5, 19992.5, 19993.5, 19994.5, 19995.5, 19996.5,\n 19997.5, 19998.5, 19999.5],\n dtype='float64', name='y', length=20000))Attributes: (2)scale_factor :1.0add_offset :0.0\n\n\n\nrgb.show(xslice=slice(1000, 2000), yslice=slice(16000, 18000))\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\nsource\n\n\nRGB_NOMAPCollection\n\n RGB_NOMAPCollection (obsids)\n\nClass to deal with a set of RGB_NOMAP products.\n/home/runner/micromamba/envs/my-env/lib/python3.11/site-packages/fastcore/docscrape.py:225: UserWarning: Unknown section Example\n else: warn(msg)\n\nsource\n\n\nSOURCE_PRODUCT\n\n SOURCE_PRODUCT (spid, saveroot=None, check_url=True)\n\nManage SOURCE_PRODUCT id.\n\nobsid = 'ESP_027021_1525_RED'\n\n\nfor i in range(10):\n for ch in [0, 1]:\n spid = f\"{obsid}{i}_{ch}\"\n try:\n SOURCE_PRODUCT(spid).download()\n except ConnectionError:\n pass\n\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\nFile exists. Use `overwrite=True` to download fresh.\n\n\n/tmp/ipykernel_1172729/2293453911.py:88: UserWarning: https://hirise-pds.lpl.arizona.edu/PDS/EDR/ESP/ORB_027000_027099/ESP_027021_1525/ESP_027021_1525_RED9_0.IMG does not exist on the server.\n warnings.warn(f\"{u} does not exist on the server.\")\n/tmp/ipykernel_1172729/2293453911.py:88: UserWarning: https://hirise-pds.lpl.arizona.edu/PDS/EDR/ESP/ORB_027000_027099/ESP_027021_1525/ESP_027021_1525_RED9_1.IMG does not exist on the server.\n warnings.warn(f\"{u} does not exist on the server.\")\n\n\n\nsp = SOURCE_PRODUCT(\"ESP_027021_1525_RED0_0\")\n\n\nsp.local_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_027021_1525/ESP_027021_1525_RED0_0.IMG')\n\n\n\nsp.download()\n\nFile exists. Use `overwrite=True` to download fresh.\n\n\n\nsp.stitched_cube_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_027021_1525/ESP_027021_1525_RED0.cub')\n\n\n\nsp.url\n\nURL('https://hirise-pds.lpl.arizona.edu/PDS/EDR/ESP/ORB_027000_027099/ESP_027021_1525/ESP_027021_1525_RED0_0.IMG')\n\n\n\nsp.remote_path\n\nPath('EDR/ESP/ORB_027000_027099/ESP_027021_1525/ESP_027021_1525_RED0_0.IMG')\n\n\n\nsp.local_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_027021_1525/ESP_027021_1525_RED0_0.IMG')\n\n\n\nsp.channel\n\n'0'\n\n\n\nsp.ccd\n\n'RED0'\n\n\n\nsp.color\n\n'RED'\n\n\n\nsp.ccdno\n\n'0'\n\n\n\nsp.spid\n\n'ESP_027021_1525_RED0_0'\n\n\n\nsp\n\nSOURCE_PRODUCT: ESP_027021_1525_RED0_0\n\n\n\nsp.fname\n\n'ESP_027021_1525_RED0_0.IMG'\n\n\n\nsp.local_cube\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/ESP_027021_1525/ESP_027021_1525_RED0_0.cub')\n\n\n\nsp.stitched_cube_name\n\n'ESP_027021_1525_RED0.cub'\n\n\n\nsp.stitched_cube_path.exists()\n\nTrue\n\n\n\nsource\n\n\nRED_PRODUCT\n\n RED_PRODUCT (obsid, ccdno, channel, **kwargs)\n\nThis exists to support creating a RED_PRODUCT_ID from parts of a SOURCE_PRODUCT id.\n\nRED_PRODUCT(\"ESP_027021_1525\", 4, 0).channel\n\n'0'\n\n\n\nrpid = RED_PRODUCT(\"ESP_039983_1390\", \"4\", \"0\")\nrpid.spid\n\n'ESP_039983_1390_RED4_0'\n\n\n\nrpid.fname\n\n'ESP_039983_1390_RED4_0.IMG'\n\n\n\nrpid.url\n\nURL('https://hirise-pds.lpl.arizona.edu/PDS/EDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RED4_0.IMG')\n\n\n\nrpid.download()\n\nFile exists. Use `overwrite=True` to download fresh.\n\n\n\nsource\n\n\nBG_PRODUCT\n\n BG_PRODUCT (obsid, ccdno, channel)\n\nManage SOURCE_PRODUCT id.\n\nsource\n\n\nIR_PRODUCT\n\n IR_PRODUCT (obsid, ccdno, channel)\n\nManage SOURCE_PRODUCT id.\n\nsource\n\n\nRedMosaic\n\n RedMosaic (obsid)\n\nInitialize self. See help(type(self)) for accurate signature.\n\nobsid = \"ESP_027021_1525\"\n\n\nred = RedMosaic(obsid)\n\n\n!ls {red.local_path.parent}\n\nB01_009958_1524_XI_27S347W.cal.cub ESP_027021_1525_RED4_1.IMG\nB01_009958_1524_XI_27S347W.lev2.cub ESP_027021_1525_RED4.cub\ncube2.lis ESP_027021_1525_RED4.map.cub\ncube.lis ESP_027021_1525_RED4.norm.cub\nESP_027021_1525_RED0_0.cal.cub ESP_027021_1525_RED5_0.cal.cub\nESP_027021_1525_RED0_0.cub ESP_027021_1525_RED5_0.cub\nESP_027021_1525_RED0_0.hical.log ESP_027021_1525_RED5_0.hical.log\nESP_027021_1525_RED0_0.IMG ESP_027021_1525_RED5_0.IMG\nESP_027021_1525_RED0_1.cal.cub ESP_027021_1525_RED5_1.cal.cub\nESP_027021_1525_RED0_1.cub ESP_027021_1525_RED5_1.cub\nESP_027021_1525_RED0_1.hical.log ESP_027021_1525_RED5_1.hical.log\nESP_027021_1525_RED0_1.IMG ESP_027021_1525_RED5_1.IMG\nESP_027021_1525_RED0.cub ESP_027021_1525_RED5.cub\nESP_027021_1525_RED0.map.cub ESP_027021_1525_RED5.map.cub\nESP_027021_1525_RED0.norm.cub ESP_027021_1525_RED5.map.cub.aux.xml\nESP_027021_1525_RED1_0.cal.cub ESP_027021_1525_RED5.norm.cub\nESP_027021_1525_RED1_0.cub ESP_027021_1525_RED6_0.cal.cub\nESP_027021_1525_RED1_0.hical.log ESP_027021_1525_RED6_0.cub\nESP_027021_1525_RED1_0.IMG ESP_027021_1525_RED6_0.hical.log\nESP_027021_1525_RED1_1.cal.cub ESP_027021_1525_RED6_0.IMG\nESP_027021_1525_RED1_1.cub ESP_027021_1525_RED6_1.cal.cub\nESP_027021_1525_RED1_1.hical.log ESP_027021_1525_RED6_1.cub\nESP_027021_1525_RED1_1.IMG ESP_027021_1525_RED6_1.hical.log\nESP_027021_1525_RED1.cub ESP_027021_1525_RED6_1.IMG\nESP_027021_1525_RED1.map.cub ESP_027021_1525_RED6.cub\nESP_027021_1525_RED1.norm.cub ESP_027021_1525_RED6.map.cub\nESP_027021_1525_RED2_0.cal.cub ESP_027021_1525_RED6.norm.cub\nESP_027021_1525_RED2_0.cub ESP_027021_1525_RED7_0.cal.cub\nESP_027021_1525_RED2_0.hical.log ESP_027021_1525_RED7_0.cub\nESP_027021_1525_RED2_0.IMG ESP_027021_1525_RED7_0.hical.log\nESP_027021_1525_RED2_1.cal.cub ESP_027021_1525_RED7_0.IMG\nESP_027021_1525_RED2_1.cub ESP_027021_1525_RED7_1.cal.cub\nESP_027021_1525_RED2_1.hical.log ESP_027021_1525_RED7_1.cub\nESP_027021_1525_RED2_1.IMG ESP_027021_1525_RED7_1.hical.log\nESP_027021_1525_RED2.cub ESP_027021_1525_RED7_1.IMG\nESP_027021_1525_RED2.map.cub ESP_027021_1525_RED7.cub\nESP_027021_1525_RED2.norm.cub ESP_027021_1525_RED7.map.cub\nESP_027021_1525_RED3_0.cal.cub ESP_027021_1525_RED7.norm.cub\nESP_027021_1525_RED3_0.cub ESP_027021_1525_RED8_0.cal.cub\nESP_027021_1525_RED3_0.hical.log ESP_027021_1525_RED8_0.cub\nESP_027021_1525_RED3_0.IMG ESP_027021_1525_RED8_0.hical.log\nESP_027021_1525_RED3_1.cal.cub ESP_027021_1525_RED8_0.IMG\nESP_027021_1525_RED3_1.cub ESP_027021_1525_RED8_1.cal.cub\nESP_027021_1525_RED3_1.hical.log ESP_027021_1525_RED8_1.cub\nESP_027021_1525_RED3_1.IMG ESP_027021_1525_RED8_1.hical.log\nESP_027021_1525_RED3.cub ESP_027021_1525_RED8_1.IMG\nESP_027021_1525_RED3.map.cub ESP_027021_1525_RED8.cub\nESP_027021_1525_RED3.norm.cub ESP_027021_1525_RED8.map.cub\nESP_027021_1525_RED4_0.cal.cub ESP_027021_1525_RED8.norm.cub\nESP_027021_1525_RED4_0.cub ESP_027021_1525_RED.LBL\nESP_027021_1525_RED4_0.hical.log normalized.lis\nESP_027021_1525_RED4_0.IMG point.txt\nESP_027021_1525_RED4_1.cal.cub print.prt\nESP_027021_1525_RED4_1.cub set_overlaps.txt\nESP_027021_1525_RED4_1.hical.log" + }, + { + "objectID": "api/pds.apps.html", + "href": "api/pds.apps.html", + "title": "Apps", + "section": "", + "text": "source\n\nfind_indexes\n\n find_indexes (instrument:str)\n\nFind existing indexes for an instrument.\n\n\n\n\nType\nDetails\n\n\n\n\ninstrument\nstr\nDotted mission.instrument key, e.g. cassini.iss\n\n\nReturns\nlist\nList of configured index names\n\n\n\n\nfind_indexes(\"cassini.iss\")\n\n['index', 'inventory', 'moon_summary', 'ring_summary', 'saturn_summary']\n\n\n\nfind_indexes(\"mro.ctx\")\n\n['edr']\n\n\n\nsource\n\n\nget_index\n\n get_index (instr:str, index_name:str='', refresh:bool=True,\n force:bool=False)\n\nExample: get_index(“cassini.iss”, “index”)\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\ninstr\nstr\n\nDotted instrument index, e.g. cassini.iss\n\n\nindex_name\nstr\n\nIndex name, for exmample ‘moon_summary. Optional’\n\n\nrefresh\nbool\nTrue\nswitch to refresh an index (i.e. download if update available).Set to False for faster return time to avoid web scraping\n\n\nforce\nbool\nFalse\nswitch off for faster return time.\n\n\nReturns\nDataFrame\n\nThe PDS index convert to pandas DataFrame\n\n\n\n\ninstr = \"cassini.iss\"\nindex_name = \"moon_summary\"\n\n\nindex = get_index(instr, index_name, refresh=False)\n\n\nindex\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nOPUS_ID\nTARGET_NAME\nMINIMUM_PLANETOCENTRIC_LATITUDE\nMAXIMUM_PLANETOCENTRIC_LATITUDE\nMINIMUM_PLANETOGRAPHIC_LATITUDE\nMAXIMUM_PLANETOGRAPHIC_LATITUDE\nMINIMUM_IAU_LONGITUDE\nMAXIMUM_IAU_LONGITUDE\n...\nMAXIMUM_EMISSION_ANGLE\nSUB_SOLAR_PLANETOCENTRIC_LATITUDE\nSUB_SOLAR_PLANETOGRAPHIC_LATITUDE\nSUB_OBSERVER_PLANETOCENTRIC_LATITUDE\nSUB_OBSERVER_PLANETOGRAPHIC_LATITUDE\nSUB_SOLAR_IAU_LONGITUDE\nSUB_OBSERVER_IAU_LONGITUDE\nCENTER_RESOLUTION\nCENTER_DISTANCE\nCENTER_PHASE_ANGLE\n\n\n\n\n0\nCOISS_2001\ndata/1454725799_1455008789/N1454725799_1.LBL\nco-iss-n1454725799\nRHEA\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n-25.206\n-25.442\n-16.566\n-16.558\n183.907\n252.947\n423.6356\n70701354.366\n64.429\n\n\n1\nCOISS_2001\ndata/1454725799_1455008789/N1454725799_1.LBL\nco-iss-n1454725799\nHELENE\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n-25.532\n-50.716\n-16.532\n-36.57\n148.17\n217.149\n424.36902\n70823757.002\n64.345\n\n\n2\nCOISS_2001\ndata/1454725799_1455008789/N1454725799_1.LBL\nco-iss-n1454725799\nTELESTO\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n-26.061\n-51.51\n-15.639\n-21.616\n189.199\n257.807\n424.28746\n70810144.519\n64.28\n\n\n3\nCOISS_2001\ndata/1454725799_1455008789/N1454726579_1.LBL\nco-iss-n1454726579\nTITAN\n-36.111\n-36.111\n-36.111\n-36.111\n0.0\n360.0\n...\n54.704\n-25.325\n-25.325\n-16.28\n-16.28\n340.092\n47.855\n428.89673\n71579395.066\n63.37\n\n\n4\nCOISS_2001\ndata/1454725799_1455008789/N1454727359_1.LBL\nco-iss-n1454727359\nHYPERION\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n11.777\n25.907\n44.104\n57.544\n173.985\n237.769\n418.94545\n69918606.586\n63.093\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n385714\nCOISS_2116\ndata/1884017637_1884113741/N1884017911_1.LBL\nco-iss-n1884017911\nTITAN\n-14.352\n72.101\n-14.352\n72.101\n229.956\n329.975\n...\n89.069\n26.644\n26.644\n23.599\n23.599\n32.084\n299.389\n4.64069\n774493.2\n81.887\n\n\n385715\nCOISS_2116\ndata/1884017637_1884113741/N1884018021_1.LBL\nco-iss-n1884018021\nTITAN\n-14.597\n71.882\n-14.597\n71.882\n230.932\n330.255\n...\n88.913\n26.644\n26.644\n23.594\n23.594\n32.107\n299.415\n4.64263\n774816.731\n81.888\n\n\n385716\nCOISS_2116\ndata/1884017637_1884113741/N1884018579_1.LBL\nco-iss-n1884018579\nTITAN\n-14.435\n72.643\n-14.435\n72.643\n228.942\n330.644\n...\n88.869\n26.644\n26.644\n23.57\n23.57\n32.217\n299.536\n9.30328\n776321.466\n81.889\n\n\n385717\nCOISS_2116\ndata/1884017637_1884113741/N1884091792_1.LBL\nco-iss-n1884091792\nDAPHNIS\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n26.684\n39.966\n25.321\n38.64\n294.939\n124.641\n4.56619\n762060.157\n127.157\n\n\n385718\nCOISS_2116\ndata/1884017637_1884113741/N1884109343_1.LBL\nco-iss-n1884109343\nPANDORA\n40.384\n63.749\n56.973\n76.952\n0.0\n360.0\n...\n62.435\n26.686\n49.386\n33.095\n53.259\n335.495\n142.016\n3.45805\n577120.582\n118.858\n\n\n\n\n385719 rows × 35 columns\n\n\n\nIndexes can be given as 2 parameters (“cassini.iss”, “ring_summary”) or one (“cassini.iss.ring_summary”):\n\nindex = get_index(\"cassini.iss\", \"ring_summary\", refresh=False)\nindex.head()\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nOPUS_ID\nMINIMUM_RIGHT_ASCENSION\nMAXIMUM_RIGHT_ASCENSION\nMINIMUM_DECLINATION\nMAXIMUM_DECLINATION\nMINIMUM_RING_RADIUS\nMAXIMUM_RING_RADIUS\nFINEST_RING_INTERCEPT_RESOLUTION\n...\nRING_CENTER_DISTANCE\nSUB_SOLAR_RING_LONGITUDE\nSUB_OBSERVER_RING_LONGITUDE\nRING_CENTER_PHASE_ANGLE\nRING_CENTER_INCIDENCE_ANGLE\nRING_CENTER_NORTH_BASED_INCIDENCE_ANGLE\nRING_CENTER_EMISSION_ANGLE\nRING_CENTER_NORTH_BASED_EMISSION_ANGLE\nSOLAR_RING_OPENING_ANGLE\nOBSERVER_RING_OPENING_ANGLE\n\n\n\n\n0\nCOISS_2001\ndata/1454725799_1455008789/N1454725799_1.LBL\nco-iss-n1454725799\n35.528398\n35.905555\n9.719637\n10.091212\n205899.335\n1098621.586\n419.0137\n...\n70874998.947\n284.523\n215.951\n64.07\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n1\nCOISS_2001\ndata/1454725799_1455008789/N1454726579_1.LBL\nco-iss-n1454726579\n36.662898\n37.039038\n9.590114\n9.960833\n721136.155\n1745689.307\n421.97145\n...\n70870851.371\n284.524\n215.951\n64.07\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n2\nCOISS_2001\ndata/1454725799_1455008789/N1454727359_1.LBL\nco-iss-n1454727359\n36.928066\n37.304334\n9.879593\n10.25011\n1042341.438\n2186830.92\n414.79041\n...\n70866703.094\n284.524\n215.951\n64.071\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n3\nCOISS_2001\ndata/1454725799_1455008789/N1454728139_1.LBL\nco-iss-n1454728139\n28.10042\n28.479618\n6.224709\n6.601574\n-999.0\n-999.0\n-999.0\n...\n70862557.207\n284.524\n215.951\n64.071\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n4\nCOISS_2001\ndata/1454725799_1455008789/N1454728919_1.LBL\nco-iss-n1454728919\n37.981418\n38.357791\n10.611947\n10.981697\n3865717.589\n3905151.343\n405.91234\n...\n70858406.794\n284.525\n215.951\n64.071\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n\n\n5 rows × 59 columns\n\n\n\n\nindex = get_index(\"cassini.iss.ring_summary\", refresh=False)\nindex.head()\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nOPUS_ID\nMINIMUM_RIGHT_ASCENSION\nMAXIMUM_RIGHT_ASCENSION\nMINIMUM_DECLINATION\nMAXIMUM_DECLINATION\nMINIMUM_RING_RADIUS\nMAXIMUM_RING_RADIUS\nFINEST_RING_INTERCEPT_RESOLUTION\n...\nRING_CENTER_DISTANCE\nSUB_SOLAR_RING_LONGITUDE\nSUB_OBSERVER_RING_LONGITUDE\nRING_CENTER_PHASE_ANGLE\nRING_CENTER_INCIDENCE_ANGLE\nRING_CENTER_NORTH_BASED_INCIDENCE_ANGLE\nRING_CENTER_EMISSION_ANGLE\nRING_CENTER_NORTH_BASED_EMISSION_ANGLE\nSOLAR_RING_OPENING_ANGLE\nOBSERVER_RING_OPENING_ANGLE\n\n\n\n\n0\nCOISS_2001\ndata/1454725799_1455008789/N1454725799_1.LBL\nco-iss-n1454725799\n35.528398\n35.905555\n9.719637\n10.091212\n205899.335\n1098621.586\n419.0137\n...\n70874998.947\n284.523\n215.951\n64.07\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n1\nCOISS_2001\ndata/1454725799_1455008789/N1454726579_1.LBL\nco-iss-n1454726579\n36.662898\n37.039038\n9.590114\n9.960833\n721136.155\n1745689.307\n421.97145\n...\n70870851.371\n284.524\n215.951\n64.07\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n2\nCOISS_2001\ndata/1454725799_1455008789/N1454727359_1.LBL\nco-iss-n1454727359\n36.928066\n37.304334\n9.879593\n10.25011\n1042341.438\n2186830.92\n414.79041\n...\n70866703.094\n284.524\n215.951\n64.071\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n3\nCOISS_2001\ndata/1454725799_1455008789/N1454728139_1.LBL\nco-iss-n1454728139\n28.10042\n28.479618\n6.224709\n6.601574\n-999.0\n-999.0\n-999.0\n...\n70862557.207\n284.524\n215.951\n64.071\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n4\nCOISS_2001\ndata/1454725799_1455008789/N1454728919_1.LBL\nco-iss-n1454728919\n37.981418\n38.357791\n10.611947\n10.981697\n3865717.589\n3905151.343\n405.91234\n...\n70858406.794\n284.525\n215.951\n64.071\n64.589\n115.411\n73.676\n106.324\n-25.411\n-16.324\n\n\n\n\n5 rows × 59 columns\n\n\n\n\nget_index(\"mro.ctx.edr\", refresh=False)\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nORIGINAL_PRODUCT_ID\nPRODUCT_ID\nIMAGE_TIME\nINSTRUMENT_ID\nINSTRUMENT_MODE_ID\nLINE_SAMPLES\nLINES\nSPATIAL_SUMMING\n...\nSUB_SOLAR_LATITUDE\nSUB_SPACECRAFT_LONGITUDE\nSUB_SPACECRAFT_LATITUDE\nSOLAR_DISTANCE\nSOLAR_LONGITUDE\nLOCAL_TIME\nIMAGE_SKEW_ANGLE\nRATIONALE_DESC\nDATA_QUALITY_DESC\nORBIT_NUMBER\n\n\n\n\n0\nMROX_0001\nDATA/CRU_000001_9999_XN_99N999W.IMG\n4A_04_0001000400\nCRU_000001_9999_XN_99N999W\n2005-08-30 15:40:21.549\nCTX\nNIFL\n5056\n1024\n1\n...\n0.0\n0.0\n0.0\n0.0\n278.89\n10.16\n0.0\nInstrument checkout image of space\nOK\n-4242\n\n\n1\nMROX_0001\nDATA/CRU_000002_9999_XN_99N999W.IMG\n4A_04_0001000500\nCRU_000002_9999_XN_99N999W\n2005-09-08 15:59:45.313\nCTX\nNIFL\n5056\n15360\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.6\n0.0\nCalibration image of the Moon\nOK\n-4126\n\n\n2\nMROX_0001\nDATA/CRU_000003_9999_XN_99N999W.IMG\n4A_04_0001000600\nCRU_000003_9999_XN_99N999W\n2005-09-08 16:03:37.927\nCTX\nNIFL\n5056\n2048\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.66\n0.0\nCalibration image of Omega Centauri (globular ...\nOK\n-4126\n\n\n3\nMROX_0001\nDATA/CRU_000004_9999_XN_99N999W.IMG\n4A_04_0001000700\nCRU_000004_9999_XN_99N999W\n2005-09-08 16:08:23.841\nCTX\nNIFL\n5056\n2048\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.74\n0.0\nCalibration image of Omega Centauri (globular ...\nOK\n-4126\n\n\n4\nMROX_0001\nDATA/CRU_000005_9999_XN_99N999W.IMG\n4A_04_0001000800\nCRU_000005_9999_XN_99N999W\n2005-09-08 16:11:18.649\nCTX\nNIFL\n5056\n21504\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.79\n0.0\nCalibration image of the Moon\nOK\n-4126\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n138410\nMROX_4461\nDATA/U14_076622_1804_XN_00N105W.IMG\n4A_04_118404B100\nU14_076622_1804_XN_00N105W\n2022-11-30 17:29:26.742\nCTX\nNIFL\n5056\n33792\n1\n...\n-5.6\n105.05\n0.45\n228081883.9\n346.9\n14.39\n89.7\nTerrain northwest of Noctis Labyrinthus\nOK\n76622\n\n\n138411\nMROX_4461\nDATA/U14_076622_2009_XI_20N108W.IMG\n4A_04_118504B200\nU14_076622_2009_XI_20N108W\n2022-11-30 17:36:13.062\nCTX\nITL\n5056\n7168\n1\n...\n-5.6\n107.61\n20.98\n228082990.5\n346.9\n14.3\n90.1\nCandidate impact site formed at most between M...\nOK\n76622\n\n\n138412\nMROX_4461\nDATA/U14_076623_1977_XN_17N133W.IMG\n4A_04_118404B300\nU14_076623_1977_XN_17N133W\n2022-11-30 19:26:53.410\nCTX\nNIFL\n5056\n35840\n1\n...\n-5.59\n134.45\n17.69\n228097986.1\n346.94\n14.37\n90.1\nRide-along with HiRISE\nOK\n76623\n\n\n138413\nMROX_4461\nDATA/U14_076625_1182_XN_61S177W.IMG\n4A_04_118404B800\nU14_076625_1182_XN_61S177W\n2022-11-30 22:46:27.741\nCTX\nNIFL\n5056\n52224\n1\n...\n-5.56\n177.43\n-61.87\n228126022.3\n347.01\n14.71\n90.4\nSouthern highlands\nOK\n76625\n\n\n138414\nMROX_4461\nDATA/U14_076625_1714_XN_08S185W.IMG\n4A_04_118404B900\nU14_076625_1714_XN_08S185W\n2022-11-30 23:02:50.690\nCTX\nNIFL\n5056\n52224\n1\n...\n-5.55\n185.83\n-8.75\n228127015.7\n347.02\n14.45\n90.5\nRide-along with HiRISE\nOK\n76625\n\n\n\n\n138415 rows × 51 columns\n\n\n\n\nsource\n\n\nfind_instruments\n\n find_instruments (mission:str)\n\nFind existing instruments for a mission.\n\n\n\n\nType\nDetails\n\n\n\n\nmission\nstr\nMission string, e.g. “cassini”\n\n\nReturns\nlist\nList of configured instrument names\n\n\n\n\nfind_instruments(\"cassini\")\n\n['iss', 'uvis']\n\n\n\nfind_instruments(\"mro\")\n\n['hirise', 'ctx']\n\n\n\nfrom nbdev import nbdev_export\nnbdev_export()" + }, + { + "objectID": "api/ctx.html", + "href": "api/ctx.html", + "title": "CTX", + "section": "", + "text": "import pandas as pd\n\npd.set_option(\"display.max_columns\", 1000)\nsource" + }, + { + "objectID": "api/ctx.html#command-line-interfaces", + "href": "api/ctx.html#command-line-interfaces", + "title": "CTX", + "section": "Command line interfaces", + "text": "Command line interfaces\n\nsource\n\nctx_calib\n\n ctx_calib (pid:str, source:str='', proc_root:str='',\n overwrite:bool=False)\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\npid\nstr\n\nCTX product_id\n\n\nsource\nstr\n\npath to where EDRs are stored if not from plpy\n\n\nproc_root\nstr\n\npath to where processed data is to be stored\n\n\noverwrite\nbool\nFalse\noverwrite processed data\n\n\n\n\nctx_calib(pid, overwrite=True)\n\n\nfrom nbdev import nbdev_export\n\nnbdev_export()" + }, + { + "objectID": "api/pds.crism_index.html", + "href": "api/pds.crism_index.html", + "title": "CRISM PDS Index", + "section": "", + "text": "url = URL(\"https://pds-geosciences.wustl.edu/mro/mro-m-crism-5-rdr-mptargeted-v1/mrocr_4001/index/mtrdr0705_index.lbl\")\n\n\nsource\n\nMTRDRIndex\n\n MTRDRIndex (url)\n\nIndex manager class.\nThis class manages one index, identified by a dotted key, e.g. cassini.iss.ring_summary\n\nindex = MTRDRIndex(url=url)\n\n\nindex.download()\n\n\n\n\n\n\n\nDownloaded /home/ayek72/mnt/slowdata/planetarypy/missions/mro/crism/indexes/mtrdr/mtrdr0705_index.lbl and /home/ayek72/mnt/slowdata/planetarypy/missions/mro/crism/indexes/mtrdr/mtrdr0705_index.tab\nDone.\n\n\n\nindex.convert_to_parquet()\n\nDone.\n\n\n\nindex.parquet\n\n\n\n\n\n\n\n\nVOLUME_ID\nPRODUCT_ID\nPRODUCT_TYPE\nFILE_SPECIFICATION_NAME\nPARTICIPATING_INSTRUMENTS\nPRODUCT_CREATION_TIME\nSTART_TIME\nSTOP_TIME\nSPACECRAFT_CLOCK_START_COUNT\nSPACECRAFT_CLOCK_STOP_COUNT\n...\nWESTERNMOST_LONGITUDE\nEASTERNMOST_LONGITUDE\nLOWER_RIGHT_LATITUDE\nLOWER_RIGHT_LONGITUDE\nLOWER_LEFT_LATITUDE\nLOWER_LEFT_LONGITUDE\nUPPER_RIGHT_LATITUDE\nUPPER_RIGHT_LONGITUDE\nUPPER_LEFT_LATITUDE\nUPPER_LEFT_LONGITUDE\n\n\n\n\n0\nMROCR_4001\nFRT00005F0C_07_IF163J_MTR3\nMPTARGETED_RDR\nMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...\n<NA>\n2015-06-12 09:00:20\n2007-05-28 17:30:38.605\n2007-05-28 17:32:22.339\n2/0864840658.00225\n2/0864840761.48344\n...\n52.8\n53.267\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n\n\n1\nMROCR_4001\nFRT00005F0C_07_WV163J_MTR3\nMPTARGETED_RDR\nMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...\n<NA>\n2015-06-12 09:00:20\n2007-05-28 17:30:38.605\n2007-05-28 17:32:22.339\n2/0864840658.00225\n2/0864840761.48344\n...\n-999.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n\n\n2\nMROCR_4001\nFRT00005F0C_07_IN163J_MTR3\nMPTARGETED_RDR\nMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...\n<NA>\n2015-06-12 09:04:09\n2007-05-28 17:30:38.605\n2007-05-28 17:32:22.339\n2/0864840658.00225\n2/0864840761.48344\n...\n52.8\n53.267\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n\n\n3\nMROCR_4001\nFRT00005F0C_07_DE163L_MTR1\nMAP_PROJECTED_DDR\nMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...\n<NA>\n2015-06-12 09:04:03\n2007-05-28 17:30:38.605\n2007-05-28 17:32:22.339\n2/864840658:225\n2/864840761:48344\n...\n52.8\n53.267\n-62.71\n53.27\n-62.76\n52.84\n-62.59\n53.23\n-62.6\n52.8\n\n\n4\nMROCR_4001\nFRT00005F0C_07_SU163J_MTR3\nMPTARGETED_RDR\nMTRDR/2007/2007_148/FRT00005F0C/FRT00005F0C_07...\n<NA>\n2015-06-12 09:00:29\n2007-05-28 17:30:38.605\n2007-05-28 17:32:22.339\n2/0864840658.00225\n2/0864840761.48344\n...\n52.8\n53.267\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n553\nMROCR_4001\nFRT00005DAC_07_IF165J_MTR3\nMPTARGETED_RDR\nMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...\n<NA>\n2015-06-12 07:20:09\n2007-05-24 07:16:57.926\n2007-05-24 07:18:57.660\n2/0864458237.21046\n2/0864458357.03629\n...\n156.527\n156.771\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n\n\n554\nMROCR_4001\nFRT00005DAC_07_DE165L_MTR1\nMAP_PROJECTED_DDR\nMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...\n<NA>\n2015-06-12 07:22:51\n2007-05-24 07:16:57.926\n2007-05-24 07:18:57.660\n2/864458237:21046\n2/864458357:3629\n...\n156.527\n156.771\n9.67\n156.77\n9.66\n156.54\n9.88\n156.75\n9.84\n156.53\n\n\n555\nMROCR_4001\nFRT00005DAC_07_WV165J_MTR3\nMPTARGETED_RDR\nMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...\n<NA>\n2015-06-12 07:20:09\n2007-05-24 07:16:57.926\n2007-05-24 07:18:57.660\n2/0864458237.21046\n2/0864458357.03629\n...\n-999.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n\n\n556\nMROCR_4001\nFRT00005DAC_07_IN165J_MTR3\nMPTARGETED_RDR\nMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...\n<NA>\n2015-06-12 07:22:56\n2007-05-24 07:16:57.926\n2007-05-24 07:18:57.660\n2/0864458237.21046\n2/0864458357.03629\n...\n156.527\n156.771\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n\n\n557\nMROCR_4001\nFRT00005DAC_07_SU165J_MTR3\nMPTARGETED_RDR\nMTRDR/2007/2007_144/FRT00005DAC/FRT00005DAC_07...\n<NA>\n2015-06-12 07:20:17\n2007-05-24 07:16:57.926\n2007-05-24 07:18:57.660\n2/0864458237.21046\n2/0864458357.03629\n...\n156.527\n156.771\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n-99.999\n-999.999\n\n\n\n\n558 rows × 57 columns" + }, + { + "objectID": "api/spice.kernels.html", + "href": "api/spice.kernels.html", + "title": "SPICE Kernels", + "section": "", + "text": "Feature list for this module:\n\nReceive the list of supported datasets for automatic retrieval of archived SPICE kernels\n\nThe supported datasets are tabled here at NAIF: https://naif.jpl.nasa.gov/naif/data_archived.html\n\nReceive the list of required SPICE kernels for a given mission and time range\nAutomatic download of kernels for a given mission and time range either into a given location or the planetarypy local archive.\n\nAs always in planetarypy the general design philosophy is to first develop a management class to give the user full control over all the details, and then add easy-to-use function for the end-user that do the most frequently used things in one go. (See section “User Functions”)" + }, + { + "objectID": "api/spice.kernels.html#intro", + "href": "api/spice.kernels.html#intro", + "title": "SPICE Kernels", + "section": "", + "text": "Feature list for this module:\n\nReceive the list of supported datasets for automatic retrieval of archived SPICE kernels\n\nThe supported datasets are tabled here at NAIF: https://naif.jpl.nasa.gov/naif/data_archived.html\n\nReceive the list of required SPICE kernels for a given mission and time range\nAutomatic download of kernels for a given mission and time range either into a given location or the planetarypy local archive.\n\nAs always in planetarypy the general design philosophy is to first develop a management class to give the user full control over all the details, and then add easy-to-use function for the end-user that do the most frequently used things in one go. (See section “User Functions”)" + }, + { + "objectID": "api/spice.kernels.html#identifying-and-downloading-kernel-sets", + "href": "api/spice.kernels.html#identifying-and-downloading-kernel-sets", + "title": "SPICE Kernels", + "section": "Identifying and downloading kernel sets", + "text": "Identifying and downloading kernel sets\nOne repeating task for SPICE calculations is the identification and retrieval of all SPICE kernels for a mission for a given time interval.\nThe folks at NAIF offer a “Subset” feature at their servers. Here we set up a table of the currently supported datasets:\n\ndatasets\n\n\n\n\n\n\n\n\npath\nMission Name\nPDS3 or PDS4\nData Size (GB)\nStart Time\nStop Time\n\n\nshorthand\n\n\n\n\n\n\n\n\n\n\nbc\nbc/bc_spice\nBepiColombo\n4\n1.1\n2018-10-20\n2023-01-01\n\n\ncassini\nco-s_j_e_v-spice-6-v1.0/cosp_1000\nCassini Orbiter\n3\n62.5\n1997-10-15\n2017-09-15\n\n\nclementine\nclem1-l-spice-6-v1.0/clsp_1000\nClementine\n3\n0.8\n1994-01-26\n1994-05-07\n\n\ndart\ndart/dart_spice\nDART\n4\n9.1\n2021-11-09\n2050-01-01\n\n\ndawn\ndawn-m_a-spice-6-v1.0/dawnsp_1000\nDAWN\n3\n86.4\n2007-09-27\n2018-10-31\n\n\ndi\ndi-c-spice-6-v1.0/disp_1000\nDeep Impact\n3\n0.7\n2005-01-12\n2005-08-09\n\n\nds1\nds1-a_c-spice-6-v1.0/ds1sp_1000\nDeep Space 1\n3\n0.9\n1998-10-24\n2001-12-18\n\n\nepoxi\ndif-c_e_x-spice-6-v1.0/epxsp_1000\nEPOXI\n3\n1.0\n2005-08-23\n2011-03-01\n\n\nem16\nem16/em16_spice\nExoMars TGO 2016\n4\n9.4\n2016-03-14\n2023-01-01\n\n\ngrail\ngrail-l-spice-6-v1.0/grlsp_1000\nGRAIL\n3\n4.3\n2011-09-10\n2012-12-17\n\n\nhayabusa\nhay-a-spice-6-v1.0/haysp_1000\nHayabusa\n3\n0.3\n2005-09-11\n2005-11-19\n\n\ninsight\ninsight/insight_spice\nInSight\n4\n0.9\n2018-05-05\n2022-12-15\n\n\njuno\njno-j_e_ss-spice-6-v1.0/jnosp_1000\nJUNO\n3\n46.9\n2011-08-05\n2022-08-17\n\n\nladee\nladee/ladee_spice\nLADEE\n4\n0.6\n2013-09-07\n2050-01-01\n\n\nlro\nlro-l-spice-6-v1.0/lrosp_1000\nLunar Reconnaissance Orbiter\n3\n595.7\n2009-06-18\n2023-03-15\n\n\nmaven\nmaven/maven_spice\nMAVEN\n4\n54.4\n2013-11-18\n2023-04-01\n\n\nopportunity\nmer1-m-spice-6-v1.0/mer1sp_1000\nMER 1 (Opportunity)\n3\n4.1\n2003-07-07\n2018-06-10\n\n\nspirit\nmer2-m-spice-6-v1.0/mer2sp_1000\nMER 2 (Spirit)\n3\n2.6\n2003-06-10\n2010-05-03\n\n\nmessenger\nmess-e_v_h-spice-6-v1.0/messsp_1000\nMESSENGER\n3\n44.8\n2004-08-03\n2015-04-30\n\n\nmars2020\nmars2020/mars2020_spice\nMars 2020\n4\n0.6\n2020-07-30\n2022-12-28\n\n\nmex\nmex-e_m-spice-6-v2.0/mexsp_2000\nMars Express\n3\n8.5\n2003-06-02\n2022-11-30\n\n\nmgs\nmgs-m-spice-6-v1.0/mgsp_1000\nMars Global Surveyor\n3\n15.4\n1996-11-06\n2006-11-02\n\n\nody\nody-m-spice-6-v1.0/odsp_1000\nMars Odyssey\n3\n33.2\n2001-04-07\n2022-10-01\n\n\nmro\nmro-m-spice-6-v1.0/mrosp_1000\nMars Reconnaissance Orbiter\n3\n314.9\n2005-08-12\n2023-04-01\n\n\nmsl\nmsl-m-spice-6-v1.0/mslsp_1000\nMars Science Laboratory\n3\n0.6\n2011-11-26\n2022-11-06\n\n\nnear\nnear-a-spice-6-v1.0/nearsp_1000\nNEAR\n3\n2.4\n1996-05-30\n2001-02-28\n\n\nnh\nnh-j_p_ss-spice-6-v1.0/nhsp_1000\nNew Horizons\n3\n1.6\n2006-01-19\n2019-12-30\n\n\norex\norex/orex_spice\nOSIRIS-REx\n4\n418.4\n2016-09-08\n2021-02-22\n\n\nrosetta\nro_rl-e_m_a_c-spice-6-v1.0/rossp_1000\nRosetta\n3\n5.9\n2004-03-02\n2017-01-01\n\n\nstardust\nsdu-c-spice-6-v1.0/sdsp_1000\nStardust\n3\n1.9\n1999-02-07\n2011-05-01\n\n\nvenus_climate_orbiter\nvco/vco_spice\nVenus Climate Orbiter\n4\n1.7\n2010-05-21\n2022-01-01\n\n\nvex\nvex-e_v-spice-6-v2.0/vexsp_2000\nVenus Express\n3\n5.0\n2005-11-09\n2015-02-06\n\n\nvo\nvo1_vo2-m-spice-6-v1.0/vosp_1000\nViking Orbiter\n3\n0.1\n1976-06-16\n1980-07-30\n\n\n\n\n\n\n\nTo receive this dataframe:\nfrom planetarypy.spice.kernels import datasets\nSome validation helpers:\n\nsource\n\nis_stop_valid\n\n is_stop_valid (mission:str, stop:astropy.time.core.Time)\n\n\n\n\n\nType\nDetails\n\n\n\n\nmission\nstr\nmission shorthand label of datasets dataframe\n\n\nstop\nTime\nstop time in astropy.Time format\n\n\n\n\nsource\n\n\nis_start_valid\n\n is_start_valid (mission:str, start:astropy.time.core.Time)\n\n\n\n\n\nType\nDetails\n\n\n\n\nmission\nstr\nmission shorthand label of datasets dataframe\n\n\nstart\nTime\nstart time in astropy.Time format\n\n\n\n\nassert is_start_valid(\"cassini\", Time(\"1998-01-01\")) is True\nassert is_start_valid(\"cassini\", Time(\"1997-01-01\")) is False\nassert is_stop_valid(\"cassini\", \"2017-01-01\") is True\nassert is_stop_valid(\"cassini\", \"2018-01-01\") is False\n\nNow we build a management class for wrapping the Perl script available at below’s URL for accessing subsets of these datasets.\nFirst, the basic URLs we will use:\nThe Perl script subsetds.pl (the name at the end of the BASE_URL) requires as input:\n\nthe dataset name\nstart and stop of the time interval\na constant named “Subset” to identify the action for this Perl script\n\nWe can assemble these parameters into a payload dictionary for the requests.get call and we manage different potential actions on the zipfile with a Subsetter class, that only requires the mission identifier, start and stop as parameters.\n/home/runner/micromamba/envs/my-env/lib/python3.11/site-packages/fastcore/docscrape.py:225: UserWarning: Unknown section Attributes\n else: warn(msg)\n\nsource\n\n\nSubsetter\n\n Subsetter (mission:str, start:str, stop=None, save_location=None)\n\nClass to manage retrieving subset SPICE kernel lists\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nmission\nstr\n\nmission shorthand in datasets dataframe\n\n\nstart\nstr\n\nstart time in either ISO or yyyy-jjj format\n\n\nstop\nNoneType\nNone\nstop time in either ISO or yyyy-jjj format\n\n\nsave_location\nNoneType\nNone\noverwrite default storing in planetarpy archive\n\n\n\n\nsource\n\n\ndownload_one_url\n\n download_one_url (url, local_path, overwrite:bool=False)\n\n\nsubset = Subsetter(\"cassini\", \"2014-270\")\n\n\nsubset.kernel_names\n\n['ck/14001_15001pa_gapfill_v14.bc',\n 'ck/14212_14279py_as_flown.bc',\n 'ck/14268_14273ra.bc',\n 'ck/cas_cda_20150318.bc',\n 'ck/cas_lemms_05109_20001_v2.bc',\n 'fk/cas_dyn_v03.tf',\n 'fk/cas_mimi_v202.tf',\n 'fk/cas_rocks_v18.tf',\n 'fk/cas_v41.tf',\n 'ik/cas_caps_v03.ti',\n 'ik/cas_cda_v01.ti',\n 'ik/cas_cirs_v09.ti',\n 'ik/cas_inms_v02.ti',\n 'ik/cas_iss_v10.ti',\n 'ik/cas_mag_v01.ti',\n 'ik/cas_mimi_v11.ti',\n 'ik/cas_radar_v11.ti',\n 'ik/cas_rpws_v01.ti',\n 'ik/cas_rss_v03.ti',\n 'ik/cas_sru_v02.ti',\n 'ik/cas_uvis_v06.ti',\n 'ik/cas_vims_v06.ti',\n 'lsk/naif0012.tls',\n 'pck/pck00010.tpc',\n 'sclk/cas00172.tsc',\n 'spk/140809BP_IRRE_00256_25017.bsp',\n 'spk/150122R_SCPSE_14251_14283.bsp',\n 'spk/180927AP_RE_90165_18018.bsp']\n\n\n\n# this should fail:\ndef _failing():\n Subsetter(\"cassini\", \"2019-01-01\")\n\n\ntest_fail(_failing, contains=\"start/stop\")\n\n\nsubset = Subsetter(\"cassini\", \"2011-02-13\", \"2011-02-14\")\n\n\nsubset.urls_file\n\n'urls_cosp_1000_110213_110214.txt'\n\n\n\nsubset.metakernel_file\n\n'cas_2011_v17_110213_110214.tm'\n\n\n\nsource\n\n\nSubsetter.kernel_names\n\n Subsetter.kernel_names ()\n\nReturn list of names of kernels for the given time range.\n\nsubset.kernel_names\n\n['ck/11001_12001pa_gapfill_v14.bc',\n 'ck/11017_11066py_as_flown.bc',\n 'ck/11044_11049ra.bc',\n 'ck/cas_cda_20120517.bc',\n 'ck/cas_lemms_05109_20001_v2.bc',\n 'fk/cas_dyn_v03.tf',\n 'fk/cas_mimi_v202.tf',\n 'fk/cas_rocks_v18.tf',\n 'fk/cas_v41.tf',\n 'ik/cas_caps_v03.ti',\n 'ik/cas_cda_v01.ti',\n 'ik/cas_cirs_v09.ti',\n 'ik/cas_inms_v02.ti',\n 'ik/cas_iss_v10.ti',\n 'ik/cas_mag_v01.ti',\n 'ik/cas_mimi_v11.ti',\n 'ik/cas_radar_v11.ti',\n 'ik/cas_rpws_v01.ti',\n 'ik/cas_rss_v03.ti',\n 'ik/cas_sru_v02.ti',\n 'ik/cas_uvis_v06.ti',\n 'ik/cas_vims_v06.ti',\n 'lsk/naif0012.tls',\n 'pck/pck00010.tpc',\n 'sclk/cas00172.tsc',\n 'spk/110504R_SCPSE_11041_11093.bsp',\n 'spk/140809BP_IRRE_00256_25017.bsp',\n 'spk/180927AP_RE_90165_18018.bsp']\n\n\n\nsubset.kernel_urls\n\n['https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/11001_12001pa_gapfill_v14.bc',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/11017_11066py_as_flown.bc',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/11044_11049ra.bc',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/cas_cda_20120517.bc',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ck/cas_lemms_05109_20001_v2.bc',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/fk/cas_dyn_v03.tf',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/fk/cas_mimi_v202.tf',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/fk/cas_rocks_v18.tf',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/fk/cas_v41.tf',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_caps_v03.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_cda_v01.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_cirs_v09.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_inms_v02.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_iss_v10.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_mag_v01.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_mimi_v11.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_radar_v11.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_rpws_v01.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_rss_v03.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_sru_v02.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_uvis_v06.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/ik/cas_vims_v06.ti',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/lsk/naif0012.tls',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/pck/pck00010.tpc',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/sclk/cas00172.tsc',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/spk/110504R_SCPSE_11041_11093.bsp',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/spk/140809BP_IRRE_00256_25017.bsp',\n 'https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000/data/spk/180927AP_RE_90165_18018.bsp']\n\n\n\nsource\n\n\nSubsetter.get_local_path\n\n Subsetter.get_local_path (url)\n\nCalculate local storage path from Kernel URL, using save_location if given.\nIf self.save_location is None, the planetarypy archive is being used.\n\n\n\n\n\n\n\n\n\nType\nDetails\n\n\n\n\nurl\n\nkernel url to determine local storage path\n\n\nReturns\nPath\nfull local path where kernel in URL will be stored\n\n\n\n\nsubset.get_local_path(subset.kernel_urls[0])\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/cassini/ck/11001_12001pa_gapfill_v14.bc')\n\n\n\nsubset.save_location = Path(\".\")\n\n\nsubset.get_local_path(subset.kernel_urls[0])\n\nPath('ck/11001_12001pa_gapfill_v14.bc')\n\n\n\nsource\n\n\nSubsetter.download_kernels\n\n Subsetter.download_kernels (overwrite:bool=False,\n non_blocking:bool=False, quiet:bool=False)\n\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\noverwrite\nbool\nFalse\nswitch to control if kernels should be downloaded over existing ones\n\n\nnon_blocking\nbool\nFalse\n\n\n\nquiet\nbool\nFalse\n\n\n\n\n\n# reset save_location to prevent additional download\nsubset.save_location = None\n\n\nsubset.download_kernels()\n\n\n\n\nck 11001_12001pa_gapfill_v14.bc locally available.\nck 11017_11066py_as_flown.bc locally available.\nck 11044_11049ra.bc locally available.\nck cas_cda_20120517.bc locally available.\nck cas_lemms_05109_20001_v2.bc locally available.\nfk cas_dyn_v03.tf locally available.\nfk cas_mimi_v202.tf locally available.\nfk cas_rocks_v18.tf locally available.\nfk cas_v41.tf locally available.\nik cas_caps_v03.ti locally available.\nik cas_cda_v01.ti locally available.\nik cas_cirs_v09.ti locally available.\nik cas_inms_v02.ti locally available.\nik cas_iss_v10.ti locally available.\nik cas_mag_v01.ti locally available.\nik cas_mimi_v11.ti locally available.\nik cas_radar_v11.ti locally available.\nik cas_rpws_v01.ti locally available.\nik cas_rss_v03.ti locally available.\nik cas_sru_v02.ti locally available.\nik cas_uvis_v06.ti locally available.\nik cas_vims_v06.ti locally available.\nlsk naif0012.tls locally available.\npck pck00010.tpc locally available.\nsclk cas00172.tsc locally available.\nspk 110504R_SCPSE_11041_11093.bsp locally available.\nspk 140809BP_IRRE_00256_25017.bsp locally available.\nspk 180927AP_RE_90165_18018.bsp locally available.\n\n\n\nsubset.download_kernels(non_blocking=True)\n\n\n\n\nck 11001_12001pa_gapfill_v14.bc locally available.\nck 11017_11066py_as_flown.bc locally available.\nck 11044_11049ra.bc locally available.\nck cas_cda_20120517.bc locally available.\nck cas_lemms_05109_20001_v2.bc locally available.\nfk cas_dyn_v03.tf locally available.\nfk cas_mimi_v202.tf locally available.\nfk cas_rocks_v18.tf locally available.\nfk cas_v41.tf locally available.\nik cas_caps_v03.ti locally available.\nik cas_cda_v01.ti locally available.\nik cas_cirs_v09.ti locally available.\nik cas_inms_v02.ti locally available.\nik cas_iss_v10.ti locally available.\nik cas_mag_v01.ti locally available.\nik cas_mimi_v11.ti locally available.\nik cas_radar_v11.ti locally available.\nik cas_rpws_v01.ti locally available.\nik cas_rss_v03.ti locally available.\nik cas_sru_v02.ti locally available.\nik cas_uvis_v06.ti locally available.\nik cas_vims_v06.ti locally available.\nlsk naif0012.tls locally available.\npck pck00010.tpc locally available.\nsclk cas00172.tsc locally available.\nspk 110504R_SCPSE_11041_11093.bsp locally available.\nspk 140809BP_IRRE_00256_25017.bsp locally available.\nspk 180927AP_RE_90165_18018.bsp locally available.\n\n\n[]\n\n\n\nsource\n\n\nSubsetter.get_metakernel\n\n Subsetter.get_metakernel ()\n\nGet metakernel file from NAIF and adapt path to match local storage.\nUse save_location if given, otherwise planetarypy archive.\n\nmkpath = subset.get_metakernel()\nmkpath\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/cassini/cas_2011_v17_110213_110214.tm')\n\n\n\n!cat {mkpath}\n\nKPL/MK\n\n This meta-kernel lists a subset of kernels from the meta-kernel\n cas_2011_v17.tm provided in the CO-S/J/E/V-SPICE-6-V1.0 SPICE PDS3 archive,\n covering the whole or a part of the customer requested time period\n from 2011-02-13T00:00:00.000 to 2011-02-14T00:00:00.000.\n\n The documentation describing these kernels can be found in the\n complete CO-S/J/E/V-SPICE-6-V1.0 SPICE PDS3 archive available at this URL\n\n https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000\n\n To use this meta-kernel users may need to modify the value of the\n PATH_VALUES keyword to point to the actual location of the archive's\n ``data'' directory on their system. Replacing ``/'' with ``\\''\n and converting line terminators to the format native to the user's\n system may also be required if this meta-kernel is to be used on a\n non-UNIX workstation.\n\n This meta-kernel was created by the NAIF node's SPICE PDS archive\n subsetting service version 2.1 on Mon Jun 19 08:13:34 PDT 2023.\n\n \n \\begindata\n \n PATH_VALUES = (\n '/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/cassini'\n )\n \n PATH_SYMBOLS = (\n 'KERNELS'\n )\n \n KERNELS_TO_LOAD = (\n '$KERNELS/lsk/naif0012.tls'\n '$KERNELS/pck/pck00010.tpc'\n '$KERNELS/fk/cas_rocks_v18.tf'\n '$KERNELS/fk/cas_mimi_v202.tf'\n '$KERNELS/fk/cas_dyn_v03.tf'\n '$KERNELS/fk/cas_v41.tf'\n '$KERNELS/ik/cas_caps_v03.ti'\n '$KERNELS/ik/cas_cda_v01.ti'\n '$KERNELS/ik/cas_cirs_v09.ti'\n '$KERNELS/ik/cas_inms_v02.ti'\n '$KERNELS/ik/cas_iss_v10.ti'\n '$KERNELS/ik/cas_mag_v01.ti'\n '$KERNELS/ik/cas_mimi_v11.ti'\n '$KERNELS/ik/cas_radar_v11.ti'\n '$KERNELS/ik/cas_rpws_v01.ti'\n '$KERNELS/ik/cas_rss_v03.ti'\n '$KERNELS/ik/cas_sru_v02.ti'\n '$KERNELS/ik/cas_uvis_v06.ti'\n '$KERNELS/ik/cas_vims_v06.ti'\n '$KERNELS/sclk/cas00172.tsc'\n '$KERNELS/spk/180927AP_RE_90165_18018.bsp'\n '$KERNELS/spk/140809BP_IRRE_00256_25017.bsp'\n '$KERNELS/spk/110504R_SCPSE_11041_11093.bsp'\n '$KERNELS/ck/11001_12001pa_gapfill_v14.bc'\n '$KERNELS/ck/11017_11066py_as_flown.bc'\n '$KERNELS/ck/11044_11049ra.bc'\n '$KERNELS/ck/cas_cda_20120517.bc'\n '$KERNELS/ck/cas_lemms_05109_20001_v2.bc'\n )\n \n \\begintext\n \n\n\n\nLoading the metakernel works! :\n\nspice.furnsh(str(mkpath))\n\nOr, with given save_location:\n\nsubset.save_location = Path(\".\")\nmkpath = subset.get_metakernel()\nmkpath\n\nPath('cas_2011_v17_110213_110214.tm')\n\n\nThe metakernel is correctly adapted, however for these tests, I didn’t download the kernels again\n\n!cat {mkpath}\n\nKPL/MK\n\n This meta-kernel lists a subset of kernels from the meta-kernel\n cas_2011_v17.tm provided in the CO-S/J/E/V-SPICE-6-V1.0 SPICE PDS3 archive,\n covering the whole or a part of the customer requested time period\n from 2011-02-13T00:00:00.000 to 2011-02-14T00:00:00.000.\n\n The documentation describing these kernels can be found in the\n complete CO-S/J/E/V-SPICE-6-V1.0 SPICE PDS3 archive available at this URL\n\n https://naif.jpl.nasa.gov/pub/naif/pds/data/co-s_j_e_v-spice-6-v1.0/cosp_1000\n\n To use this meta-kernel users may need to modify the value of the\n PATH_VALUES keyword to point to the actual location of the archive's\n ``data'' directory on their system. Replacing ``/'' with ``\\''\n and converting line terminators to the format native to the user's\n system may also be required if this meta-kernel is to be used on a\n non-UNIX workstation.\n\n This meta-kernel was created by the NAIF node's SPICE PDS archive\n subsetting service version 2.1 on Mon Jun 19 08:13:34 PDT 2023.\n\n \n \\begindata\n \n PATH_VALUES = (\n '.'\n )\n \n PATH_SYMBOLS = (\n 'KERNELS'\n )\n \n KERNELS_TO_LOAD = (\n '$KERNELS/lsk/naif0012.tls'\n '$KERNELS/pck/pck00010.tpc'\n '$KERNELS/fk/cas_rocks_v18.tf'\n '$KERNELS/fk/cas_mimi_v202.tf'\n '$KERNELS/fk/cas_dyn_v03.tf'\n '$KERNELS/fk/cas_v41.tf'\n '$KERNELS/ik/cas_caps_v03.ti'\n '$KERNELS/ik/cas_cda_v01.ti'\n '$KERNELS/ik/cas_cirs_v09.ti'\n '$KERNELS/ik/cas_inms_v02.ti'\n '$KERNELS/ik/cas_iss_v10.ti'\n '$KERNELS/ik/cas_mag_v01.ti'\n '$KERNELS/ik/cas_mimi_v11.ti'\n '$KERNELS/ik/cas_radar_v11.ti'\n '$KERNELS/ik/cas_rpws_v01.ti'\n '$KERNELS/ik/cas_rss_v03.ti'\n '$KERNELS/ik/cas_sru_v02.ti'\n '$KERNELS/ik/cas_uvis_v06.ti'\n '$KERNELS/ik/cas_vims_v06.ti'\n '$KERNELS/sclk/cas00172.tsc'\n '$KERNELS/spk/180927AP_RE_90165_18018.bsp'\n '$KERNELS/spk/140809BP_IRRE_00256_25017.bsp'\n '$KERNELS/spk/110504R_SCPSE_11041_11093.bsp'\n '$KERNELS/ck/11001_12001pa_gapfill_v14.bc'\n '$KERNELS/ck/11017_11066py_as_flown.bc'\n '$KERNELS/ck/11044_11049ra.bc'\n '$KERNELS/ck/cas_cda_20120517.bc'\n '$KERNELS/ck/cas_lemms_05109_20001_v2.bc'\n )\n \n \\begintext" + }, + { + "objectID": "api/spice.kernels.html#user-functions", + "href": "api/spice.kernels.html#user-functions", + "title": "SPICE Kernels", + "section": "User functions", + "text": "User functions\n\nsource\n\nget_metakernel_and_files\n\n get_metakernel_and_files (mission:str, start:str, stop:str,\n save_location:str=None, quiet:bool=False)\n\nFor a given mission and start/stop times, download the kernels and get metakernel path\n\n\n\n\n\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nmission\nstr\n\nmission shorthand from datasets dataframe\n\n\nstart\nstr\n\nstart time as iso-string, or yyyy-jjj\n\n\nstop\nstr\n\nstop time as iso-string or yyyy-jjj\n\n\nsave_location\nstr\nNone\noverride storage into planetarypy archive\n\n\nquiet\nbool\nFalse\nsuppress kernel-wise feedback\n\n\nReturns\nPath\n\npathlib.Path to metakernel file with corrected data path.\n\n\n\n\nmkpath = get_metakernel_and_files(\"cassini\", \"2011-02-13\", \"2011-02-14\")\nmkpath\n\n/Users/maye/mambaforge/envs/py39/lib/python3.9/site-packages/distributed/node.py:182: UserWarning: Port 8787 is already in use.\nPerhaps you already have a cluster running?\nHosting the HTTP server on port 57624 instead\n warnings.warn(\n\n\n\n\n\nck 11001_12001pa_gapfill_v14.bc locally available.\nck 11017_11066py_as_flown.bc locally available.\nck 11044_11049ra.bc locally available.\nck cas_cda_20120517.bc locally available.\nck cas_lemms_05109_20001_v2.bc locally available.\nfk cas_dyn_v03.tf locally available.\nfk cas_mimi_v202.tf locally available.\nfk cas_rocks_v18.tf locally available.\nfk cas_v41.tf locally available.\nik cas_caps_v03.ti locally available.\nik cas_cda_v01.ti locally available.\nik cas_cirs_v09.ti locally available.\nik cas_inms_v02.ti locally available.\nik cas_iss_v10.ti locally available.\nik cas_mag_v01.ti locally available.\nik cas_mimi_v11.ti locally available.\nik cas_radar_v11.ti locally available.\nik cas_rpws_v01.ti locally available.\nik cas_rss_v03.ti locally available.\nik cas_sru_v02.ti locally available.\nik cas_uvis_v06.ti locally available.\nik cas_vims_v06.ti locally available.\nlsk naif0012.tls locally available.\npck pck00010.tpc locally available.\nsclk cas00172.tsc locally available.\nspk 110504R_SCPSE_11041_11093.bsp locally available.\nspk 140809BP_IRRE_00256_25017.bsp locally available.\nspk 180927AP_RE_90165_18018.bsp locally available.\n\n\nPath('/Users/maye/planetarypy_data/spice_kernels/cassini/cas_2011_v17_110213_110214.tm')\n\n\n\nsource\n\n\nlist_kernels_for_day\n\n list_kernels_for_day (mission:str, start:str, stop:str='')\n\n\n\n\n\nType\nDefault\nDetails\n\n\n\n\nmission\nstr\n\nmission shorthand from datasets dataframe\n\n\nstart\nstr\n\nstart time as iso-string, or yyyy-jjj\n\n\nstop\nstr\n\nstop time as iso-string or yyyy-jjj\n\n\nReturns\nlist\n\nlist of kernel names\n\n\n\n\nlist_kernels_for_day(\"mro\", \"2015-02-13\")\n\n['ck/mro_crm_psp_150201_150228.bc',\n 'ck/mro_hga_psp_150210_150216_v2.bc',\n 'ck/mro_mcs_psp_150201_150228.bc',\n 'ck/mro_sa_psp_150210_150216_v2.bc',\n 'ck/mro_sc_psp_150210_150216_v2.bc',\n 'fk/mro_v16.tf',\n 'ik/mro_crism_v10.ti',\n 'ik/mro_ctx_v11.ti',\n 'ik/mro_hirise_v12.ti',\n 'ik/mro_marci_v10.ti',\n 'ik/mro_mcs_v10.ti',\n 'ik/mro_onc_v10.ti',\n 'lsk/naif0012.tls',\n 'pck/pck00008.tpc',\n 'sclk/mro_sclkscet_00095_65536.tsc',\n 'spk/de421.bsp',\n 'spk/mar097.bsp',\n 'spk/mro_psp34.bsp',\n 'spk/mro_psp34_ssd_mro95a.bsp',\n 'spk/mro_struct_v10.bsp']\n\n\n\n# this always takes much longer than other requests!\nlist_kernels_for_day(\"maven\", \"2017-01-01\")\n\n['ck/mvn_app_rel_161226_170101_v01.bc',\n 'ck/mvn_app_rel_170102_170108_v01.bc',\n 'ck/mvn_iuvs_rem_170101_170331_v03.bc',\n 'ck/mvn_sc_rel_161226_170101_v01.bc',\n 'ck/mvn_sc_rel_170102_170108_v02.bc',\n 'ck/mvn_swea_nom_131118_300101_v02.bc',\n 'fk/maven_v09.tf',\n 'ik/maven_ant_v10.ti',\n 'ik/maven_euv_v10.ti',\n 'ik/maven_iuvs_v11.ti',\n 'ik/maven_ngims_v10.ti',\n 'ik/maven_sep_v12.ti',\n 'ik/maven_static_v11.ti',\n 'ik/maven_swea_v11.ti',\n 'ik/maven_swia_v10.ti',\n 'lsk/naif0012.tls',\n 'pck/pck00010.tpc',\n 'sclk/mvn_sclkscet_00072.tsc',\n 'spk/de430s.bsp',\n 'spk/mar097s.bsp',\n 'spk/maven_orb_rec_170101_170401_v1.bsp',\n 'spk/maven_struct_v01.bsp']\n\n\n\n# this always takes much longer than other requests!\nlist_kernels_for_day(\"orex\", \"2018-11-30\")\n\n['ck/orx_sa_rel_181126_181202_v01.bc',\n 'ck/orx_sc_rel_181126_181202_v01.bc',\n 'ck/orx_struct_mapcam_v01.bc',\n 'ck/orx_struct_polycam_v01.bc',\n 'fk/orx_shape_v03.tf',\n 'fk/orx_v14.tf',\n 'ik/orx_lidar_v00.ti',\n 'ik/orx_navcam_v02.ti',\n 'ik/orx_ocams_v07.ti',\n 'ik/orx_ola_v01.ti',\n 'ik/orx_otes_v00.ti',\n 'ik/orx_ovirs_v00.ti',\n 'ik/orx_rexis_v01.ti',\n 'ik/orx_stowcam_v00.ti',\n 'ik/orx_struct_v00.ti',\n 'lsk/naif0012.tls',\n 'pck/bennu_v17.tpc',\n 'pck/pck00010.tpc',\n 'sclk/orx_sclkscet_00074.tsc',\n 'spk/bennu_refdrmc_v1.bsp',\n 'spk/de424.bsp',\n 'spk/orx_180301_181201_180921_od044_v1.bsp',\n 'spk/orx_180801_190302_181218_od077_v1.bsp',\n 'spk/orx_181203_190302_190104_od085_v1.bsp',\n 'spk/orx_struct_v04.bsp']\n\n\n\ndef _test_mission_kernels_available(mission):\n print(\"Doing\", mission)\n start = datasets.at[mission, \"Start Time\"]\n end = datasets.at[mission, \"Stop Time\"]\n half = Time(start) + (Time(end) - Time(start)) / 2\n print(\"Half time:\", half)\n try:\n found = list_kernels_for_day(mission, half)\n except IndexError:\n print(\"Problem with\", mission)\n else:\n print(f\"Found {len(found)} kernels for {mission}\")\n\nfor mission in datasets.index:\n _test_mission_kernels_available(mission)\n\nDoing bc\nHalf time: 2020-11-25 00:00:00.000\nFound 41 kernels for bc\nDoing cassini\nHalf time: 2007-09-30 12:00:01.000\nFound 32 kernels for cassini\nDoing clementine\nHalf time: 1994-03-17 12:00:00.000\nFound 19 kernels for clementine\nDoing dart\nHalf time: 2035-12-06 00:00:00.000\nFound 14 kernels for dart\nDoing dawn\nHalf time: 2013-04-14 00:00:00.000\nFound 21 kernels for dawn\nDoing di\nHalf time: 2005-04-26 12:00:00.000\nFound 16 kernels for di\nDoing ds1\nHalf time: 2000-05-21 11:59:59.500\nFound 11 kernels for ds1\nDoing epoxi\nHalf time: 2008-05-27 00:00:00.000\nFound 12 kernels for epoxi\nDoing em16\nHalf time: 2019-08-07 23:59:59.500\nFound 27 kernels for em16\nDoing grail\nHalf time: 2012-04-29 00:00:00.500\nFound 20 kernels for grail\nDoing hayabusa\nHalf time: 2005-10-15 12:00:00.000\nFound 15 kernels for hayabusa\nDoing insight\nHalf time: 2020-08-24 12:00:00.000\nFound 21 kernels for insight\nDoing juno\nHalf time: 2017-02-08 23:59:58.500\nFound 25 kernels for juno\nDoing ladee\nHalf time: 2031-11-04 11:59:59.000\nFound 12 kernels for ladee\nDoing lro\nHalf time: 2016-04-30 23:59:59.500\nFound 24 kernels for lro\nDoing maven\nHalf time: 2018-07-25 11:59:59.000\nFound 20 kernels for maven\nDoing opportunity\nHalf time: 2010-12-23 00:00:00.500\nFound 23 kernels for opportunity\nDoing spirit\nHalf time: 2006-11-20 12:00:00.000\nFound 24 kernels for spirit\nDoing messenger\nHalf time: 2009-12-15 23:59:59.500\nFound 18 kernels for messenger\nDoing mars2020\nHalf time: 2021-10-13 12:00:00.000\nFound 17 kernels for mars2020\nDoing mex\nHalf time: 2013-03-01 11:59:59.500\nFound 39 kernels for mex\nDoing mgs\nHalf time: 2001-11-03 23:59:59.500\nFound 20 kernels for mgs\nDoing ody\nHalf time: 2012-01-03 12:00:00.500\nFound 14 kernels for ody\nDoing mro\nHalf time: 2014-06-06 11:59:59.500\nFound 20 kernels for mro\nDoing msl\nHalf time: 2017-05-16 23:59:58.500\nFound 50 kernels for msl\nDoing near\nHalf time: 1998-10-14 12:00:00.000\nFound 15 kernels for near\nDoing nh\nHalf time: 2013-01-08 12:00:00.000\nFound 28 kernels for nh\nDoing orex\nHalf time: 2018-11-30 23:59:59.500\n\n\n warnings.warn('ERFA function \"{}\" yielded {}'.format(func_name, wmsg),\n warnings.warn('ERFA function \"{}\" yielded {}'.format(func_name, wmsg),\n warnings.warn('ERFA function \"{}\" yielded {}'.format(func_name, wmsg),\n warnings.warn('ERFA function \"{}\" yielded {}'.format(func_name, wmsg),\n\n\nOSError: SPICE Server request returned status code: {r.status_code}\n\n\n\nNOTE: Any ErfaWarnings above are caused by the LADEE mission using a kernel up to 2050, and the astropy.Time module warns about potential precicision issues regarding unknown leapseconds that will be put in in the future.\n\n\n\nGeneric kernel management\nThere are a few generic kernels that are required for basic illumination calculations as supported by this package.\n\nsource\n\n\ndownload_generic_kernels\n\n download_generic_kernels (overwrite=False)\n\nDownload all kernels as required by generic_kernel_list.\n\ndownload_generic_kernels()\n\n\nsource\n\n\nload_generic_kernels\n\n load_generic_kernels ()\n\nLoad all kernels in generic_kernels list.\nLoads pure planetary bodies meta-kernel without spacecraft data.\nDownloads any missing generic kernels.\n\nspice.kclear()\n\n\nload_generic_kernels()\n\n\nsource\n\n\nshow_loaded_kernels\n\n show_loaded_kernels ()\n\nPrint overview of loaded kernels.\n\nshow_loaded_kernels()\n\n\nfrom nbdev import nbdev_export\n\nnbdev_export()" + }, + { + "objectID": "tutorials/pdw2023_demo.html", + "href": "tutorials/pdw2023_demo.html", + "title": "Demo of PlanetaryPy", + "section": "", + "text": "import planetarypy as plpy\nplpy.__version__\n\n'0.30.0'\nfrom planetarypy.pds.apps import get_index, find_indexes\n!head -n 50 $HOME/.planetarypy_config.toml\n\nstorage_root = \"/home/ayek72/mnt/slowdata/planetarypy\"\n\n[missions.cassini.iss.indexes.index]\n# 'index' is the ID of the originally delivered index\n# inventory, moon_summary, ring_summary, and saturn_summary are other indexes produced\n# by the Rings-Moons Systems PDS node\nurl = \"https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_index.lbl\"\ntimestamp = \"2021-02-21T15:55:27\"\n\n[missions.cassini.iss.indexes.inventory]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_inventory.lbl\"\n\n[missions.cassini.iss.indexes.moon_summary]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl\"\ntimestamp = \"2019-06-08T16:28:22\"\n\n[missions.cassini.iss.indexes.ring_summary]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_ring_summary.lbl\"\ntimestamp = \"2022-08-08T11:54:51.140376\"\n\n[missions.cassini.iss.indexes.saturn_summary]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_saturn_summary.lbl\"\ntimestamp = \"2022-12-21T18:10:29.248055\"\n\n\n[missions.cassini.uvis.indexes.index]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_index.lbl\"\ntimestamp = \"2022-09-01T14:14:10.014705\"\n\n[missions.cassini.uvis.indexes.moon_summary]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_moon_summary.lbl\"\n\n[missions.cassini.uvis.indexes.ring_summary]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_ring_summary.lbl\"\ntimestamp = \"2022-08-08T11:53:16.071844\"\n\n[missions.cassini.uvis.indexes.saturn_summary]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_saturn_summary.lbl\"\n\n[missions.cassini.uvis.indexes.supplemental_index]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_supplemental_index.lbl\"\n\n[missions.cassini.uvis.indexes.versions]\nurl = \"https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_versions.lbl\"\n\n\n\n[missions.mro.hirise.indexes.dtm]\nurl = \"https://hirise-pds.lpl.arizona.edu/PDS/INDEX/DTMCUMINDEX.LBL\"\nfind_indexes(\"cassini.iss\")\n\n['index', 'inventory', 'moon_summary', 'ring_summary', 'saturn_summary']\nfind_indexes(\"cassini.uvis\")\n\n['index',\n 'moon_summary',\n 'ring_summary',\n 'saturn_summary',\n 'supplemental_index',\n 'versions']\ndf = get_index(\"cassini.iss.index\")\ndf.head()\n\n\n\n\n\n\n\n\nFILE_NAME\nFILE_SPECIFICATION_NAME\nVOLUME_ID\nANTIBLOOMING_STATE_FLAG\nBIAS_STRIP_MEAN\nCALIBRATION_LAMP_STATE_FLAG\nCOMMAND_FILE_NAME\nCOMMAND_SEQUENCE_NUMBER\nDARK_STRIP_MEAN\nDATA_CONVERSION_TYPE\n...\nTWIST_ANGLE\nTARGET_LIST\nUPPER_LEFT_LATITUDE\nUPPER_LEFT_LONGITUDE\nUPPER_RIGHT_LATITUDE\nUPPER_RIGHT_LONGITUDE\nDATA_SET_NAME\nINSTRUMENT_HOST_ID\nPRODUCT_TYPE\nSTANDARD_DATA_PRODUCT_ID\n\n\n\n\n0\nN1454725799_1.IMG\ndata/1454725799_1455008789/N1454725799_1.IMG\nCOISS_2001\nOFF\n14.869863\n<NA>\nOPNAV_848_3.ioi\n8\n0.0\n12BIT\n...\n89.513591\nS2_2004,HELENE,TELESTO,RHEA\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n1\nN1454726579_1.IMG\ndata/1454725799_1455008789/N1454726579_1.IMG\nCOISS_2001\nOFF\n14.860078\n<NA>\nOPNAV_864_3.ioi\n8\n0.0\n12BIT\n...\n89.647635\nTITAN\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n2\nN1454727359_1.IMG\ndata/1454725799_1455008789/N1454727359_1.IMG\nCOISS_2001\nOFF\n14.87867\n<NA>\nOPNAV_880_3.ioi\n8\n0.0\n12BIT\n...\n89.679084\nHYPERION\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n3\nN1454728139_1.IMG\ndata/1454725799_1455008789/N1454728139_1.IMG\nCOISS_2001\nOFF\n14.842465\n<NA>\nOPNAV_912_3.ioi\n8\n0.0\n12BIT\n...\n88.677516\nPHOEBE\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n4\nN1454728919_1.IMG\ndata/1454725799_1455008789/N1454728919_1.IMG\nCOISS_2001\nOFF\n14.86497\n<NA>\nOPNAV_896_3.ioi\n8\n0.0\n12BIT\n...\n89.79891\nIAPETUS\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n\n\n5 rows × 140 columns\ndf.columns\n\nIndex(['FILE_NAME', 'FILE_SPECIFICATION_NAME', 'VOLUME_ID',\n 'ANTIBLOOMING_STATE_FLAG', 'BIAS_STRIP_MEAN',\n 'CALIBRATION_LAMP_STATE_FLAG', 'COMMAND_FILE_NAME',\n 'COMMAND_SEQUENCE_NUMBER', 'DARK_STRIP_MEAN', 'DATA_CONVERSION_TYPE',\n ...\n 'TWIST_ANGLE', 'TARGET_LIST', 'UPPER_LEFT_LATITUDE',\n 'UPPER_LEFT_LONGITUDE', 'UPPER_RIGHT_LATITUDE', 'UPPER_RIGHT_LONGITUDE',\n 'DATA_SET_NAME', 'INSTRUMENT_HOST_ID', 'PRODUCT_TYPE',\n 'STANDARD_DATA_PRODUCT_ID'],\n dtype='object', length=140)\ndf.set_index(\"IMAGE_MID_TIME\").loc['20170914 00':'20170914 15']\n\n\n\n\n\n\n\n\nFILE_NAME\nFILE_SPECIFICATION_NAME\nVOLUME_ID\nANTIBLOOMING_STATE_FLAG\nBIAS_STRIP_MEAN\nCALIBRATION_LAMP_STATE_FLAG\nCOMMAND_FILE_NAME\nCOMMAND_SEQUENCE_NUMBER\nDARK_STRIP_MEAN\nDATA_CONVERSION_TYPE\n...\nTWIST_ANGLE\nTARGET_LIST\nUPPER_LEFT_LATITUDE\nUPPER_LEFT_LONGITUDE\nUPPER_RIGHT_LATITUDE\nUPPER_RIGHT_LONGITUDE\nDATA_SET_NAME\nINSTRUMENT_HOST_ID\nPRODUCT_TYPE\nSTANDARD_DATA_PRODUCT_ID\n\n\nIMAGE_MID_TIME\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n2017-09-14 13:26:59.927\nN1884091007_1.IMG\ndata/1884017637_1884113741/N1884091007_1.IMG\nCOISS_2116\nOFF\n21.611872\n<NA>\ntrigger_25245_3.ioi\n25245\n1.218444\n12BIT\n...\n4.868274\n<NA>\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n2017-09-14 13:31:18.910\nN1884091266_1.IMG\ndata/1884017637_1884113741/N1884091266_1.IMG\nCOISS_2116\nOFF\n21.594259\n<NA>\ntrigger_25245_3.ioi\n25245\n1.222236\n12BIT\n...\n4.812541\n<NA>\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n2017-09-14 13:35:41.908\nN1884091529_1.IMG\ndata/1884017637_1884113741/N1884091529_1.IMG\nCOISS_2116\nOFF\n21.87019\n<NA>\ntrigger_25245_3.ioi\n25245\n1.229574\n12BIT\n...\n4.77302\nDAPHNIS\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n2017-09-14 13:40:04.906\nN1884091792_1.IMG\ndata/1884017637_1884113741/N1884091792_1.IMG\nCOISS_2116\nOFF\n21.843445\n<NA>\ntrigger_25245_3.ioi\n25245\n1.254036\n12BIT\n...\n4.748047\n<NA>\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n2017-09-14 13:44:27.905\nN1884092055_1.IMG\ndata/1884017637_1884113741/N1884092055_1.IMG\nCOISS_2116\nOFF\n21.885845\n<NA>\ntrigger_25245_3.ioi\n25245\n1.263209\n12BIT\n...\n4.736484\n<NA>\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n2017-09-14 13:48:50.903\nN1884092318_1.IMG\ndata/1884017637_1884113741/N1884092318_1.IMG\nCOISS_2116\nOFF\n21.558872\n<NA>\ntrigger_25245_3.ioi\n25245\n1.260029\n12BIT\n...\n4.737905\n<NA>\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n2017-09-14 13:53:13.901\nN1884092581_1.IMG\ndata/1884017637_1884113741/N1884092581_1.IMG\nCOISS_2116\nOFF\n21.606491\n<NA>\ntrigger_25245_3.ioi\n25245\n1.248288\n12BIT\n...\n4.750201\n<NA>\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\n-100000000000000005366162204393472.0\nCASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...\nCO\nEDR\nISS_EDR\n\n\n\n\n7 rows × 139 columns" + }, + { + "objectID": "tutorials/pdw2023_demo.html#archived-kernels", + "href": "tutorials/pdw2023_demo.html#archived-kernels", + "title": "Demo of PlanetaryPy", + "section": "Archived kernels", + "text": "Archived kernels\n\nfrom planetarypy.spice import kernels\n\n\nkernels.datasets\n\n\n\n\n\n\n\n\npath\nMission Name\nPDS3 or PDS4\nData Size (GB)\nStart Time\nStop Time\n\n\nshorthand\n\n\n\n\n\n\n\n\n\n\nbc\nbc/bc_spice\nBepiColombo\n4\n2.3\n2018-10-20\n2023-06-21\n\n\ncassini\nco-s_j_e_v-spice-6-v1.0/cosp_1000\nCassini Orbiter\n3\n62.5\n1997-10-15\n2017-09-15\n\n\nclementine\nclem1-l-spice-6-v1.0/clsp_1000\nClementine\n3\n0.8\n1994-01-26\n1994-05-07\n\n\ndart\ndart/dart_spice\nDART\n4\n10.0\n2021-11-09\n2050-01-01\n\n\ndawn\ndawn-m_a-spice-6-v1.0/dawnsp_1000\nDAWN\n3\n86.4\n2007-09-27\n2018-10-31\n\n\ndi\ndi-c-spice-6-v1.0/disp_1000\nDeep Impact\n3\n0.7\n2005-01-12\n2005-08-09\n\n\nds1\nds1-a_c-spice-6-v1.0/ds1sp_1000\nDeep Space 1\n3\n0.9\n1998-10-24\n2001-12-18\n\n\nepoxi\ndif-c_e_x-spice-6-v1.0/epxsp_1000\nEPOXI\n3\n1.0\n2005-08-23\n2011-03-01\n\n\nem16\nem16/em16_spice\nExoMars TGO 2016\n4\n10.4\n2016-03-14\n2023-10-01\n\n\ngrail\ngrail-l-spice-6-v1.0/grlsp_1000\nGRAIL\n3\n4.3\n2011-09-10\n2012-12-17\n\n\nhayabusa\nhay-a-spice-6-v1.0/haysp_1000\nHayabusa\n3\n0.3\n2005-09-11\n2005-11-19\n\n\ninsight\ninsight/insight_spice\nInSight\n4\n0.9\n2018-05-05\n2022-12-15\n\n\njuno\njno-j_e_ss-spice-6-v1.0/jnosp_1000\nJUNO\n3\n48.2\n2011-08-05\n2023-04-08\n\n\nladee\nladee/ladee_spice\nLADEE\n4\n0.6\n2013-09-07\n2050-01-01\n\n\nlro\nlro-l-spice-6-v1.0/lrosp_1000\nLunar Reconnaissance Orbiter\n3\n616.9\n2009-06-18\n2023-09-15\n\n\nmaven\nmaven/maven_spice\nMAVEN\n4\n56.6\n2013-11-18\n2023-10-01\n\n\nopportunity\nmer1-m-spice-6-v1.0/mer1sp_1000\nMER 1 (Opportunity)\n3\n4.1\n2003-07-07\n2018-06-10\n\n\nspirit\nmer2-m-spice-6-v1.0/mer2sp_1000\nMER 2 (Spirit)\n3\n2.6\n2003-06-10\n2010-05-03\n\n\nmessenger\nmess-e_v_h-spice-6-v1.0/messsp_1000\nMESSENGER\n3\n44.8\n2004-08-03\n2015-04-30\n\n\nmars2020\nmars2020/mars2020_spice\nMars 2020\n4\n0.6\n2020-07-30\n2023-08-31\n\n\nmex\nmex-e_m-spice-6-v2.0/mexsp_2000\nMars Express\n3\n10.6\n2003-06-02\n2023-08-31\n\n\nmgs\nmgs-m-spice-6-v1.0/mgsp_1000\nMars Global Surveyor\n3\n15.4\n1996-11-06\n2006-11-02\n\n\nody\nody-m-spice-6-v1.0/odsp_1000\nMars Odyssey\n3\n35.2\n2001-04-07\n2023-07-01\n\n\nmro\nmro-m-spice-6-v1.0/mrosp_1000\nMars Reconnaissance Orbiter\n3\n324.7\n2005-08-12\n2023-10-01\n\n\nmsl\nmsl-m-spice-6-v1.0/mslsp_1000\nMars Science Laboratory\n3\n0.6\n2011-11-26\n2023-07-29\n\n\nnear\nnear-a-spice-6-v1.0/nearsp_1000\nNEAR\n3\n2.4\n1996-05-30\n2001-02-28\n\n\nnh\nnh-j_p_ss-spice-6-v1.0/nhsp_1000\nNew Horizons\n3\n1.6\n2006-01-19\n2019-12-30\n\n\norex\norex/orex_spice\nOSIRIS-REx\n4\n424.7\n2016-09-08\n2023-10-02\n\n\nrosetta\nro_rl-e_m_a_c-spice-6-v1.0/rossp_1000\nRosetta\n3\n5.9\n2004-03-02\n2017-01-01\n\n\nstardust\nsdu-c-spice-6-v1.0/sdsp_1000\nStardust\n3\n1.9\n1999-02-07\n2011-05-01\n\n\nvenus_climate_orbiter\nvco/vco_spice\nVenus Climate Orbiter\n4\n1.9\n2010-05-21\n2023-01-01\n\n\nvex\nvex-e_v-spice-6-v2.0/vexsp_2000\nVenus Express\n3\n5.0\n2005-11-09\n2015-02-06\n\n\nvo\nvo1_vo2-m-spice-6-v1.0/vosp_1000\nViking Orbiter\n3\n0.1\n1976-06-16\n1980-07-30\n\n\n\n\n\n\n\n\nkernels.list_kernels_for_day('bc', '2019-01-01')\n\n['ck/bc_mmo_sc_cruise_v01.bc',\n 'ck/bc_mpo_magboom_v01.bc',\n 'ck/bc_mtm_sc_cruise_v01.bc',\n 'fk/bc_dsk_surfaces_v03.tf',\n 'fk/bc_mmo_v13.tf',\n 'fk/bc_mpo_v34.tf',\n 'fk/bc_mtm_v12.tf',\n 'fk/bc_sci_v12.tf',\n 'fk/earth_topo_201023.tf',\n 'fk/earthstns_jaxa_20230905.tf',\n 'fk/estrack_v04.tf',\n 'fk/rssd0002.tf',\n 'ik/bc_mmo_mppe_v04.ti',\n 'ik/bc_mmo_msasi_v03.ti',\n 'ik/bc_mpo_aux_v01.ti',\n 'ik/bc_mpo_bela_v09.ti',\n 'ik/bc_mpo_mertis_v08.ti',\n 'ik/bc_mpo_mgns_v02.ti',\n 'ik/bc_mpo_mixs_v06.ti',\n 'ik/bc_mpo_phebus_v06.ti',\n 'ik/bc_mpo_serena_v08.ti',\n 'ik/bc_mpo_simbio-sys_v10.ti',\n 'ik/bc_mpo_sixs_v08.ti',\n 'ik/bc_mpo_str_v02.ti',\n 'ik/bc_mtm_mcam_v05.ti',\n 'lsk/naif0012.tls',\n 'pck/earth_000101_231220_230927.bpc',\n 'pck/gm_de431.tpc',\n 'pck/pck00011_bc_v00.tpc',\n 'sclk/bc_mmo_fict_20170228.tsc',\n 'sclk/bc_mpo_fict_20181127.tsc',\n 'sclk/bc_mpo_step_20230917.tsc',\n 'spk/bc_mmo_cruise_v01.bsp',\n 'spk/bc_mmo_struct_v01.bsp',\n 'spk/bc_mpo_cog_v03.bsp',\n 'spk/bc_mpo_struct_v09.bsp',\n 'spk/bc_mtm_cruise_v01.bsp',\n 'spk/bc_mtm_struct_v06.bsp',\n 'spk/bc_sci_v02.bsp',\n 'spk/de432s.bsp',\n 'spk/earthstns_itrf93_201023.bsp',\n 'spk/earthstns_jaxa_20230905.bsp',\n 'spk/estrack_v04.bsp']\n\n\n\nmkpath = kernels.get_metakernel_and_files('msl', '2020-01-01', '2020-01-05')\n\n\n\n\nmsl_ra_toolsref_v1.bc: 0%| | 0/18432 [00:00<?, ?it/s]\nmsl_v08.tf: 0%| | 0/205622 [00:00<?, ?it/s]/325632 [00:00<?, ?it/s]\nmsl_surf_rsm_tlmenc_2579_2713_v1.bc: 0%| | 0/4276224 [00:00<?, ?it/s][A\nmsl_surf_hga_tlm_2579_2713_v1.bc: 0%| | 0/2271232 [00:00<?, ?it/s]\nmsl_ra_toolsref_v1.bc: 100%|██████████| 18.0k/18.0k [00:00<00:00, 118kB/s] it/s]\nmsl_surf_rsm_tlmenc_2579_2713_v1.bc: 0%| | 4.00k/4.08M [00:00<02:40, 26.6kB/s]\nmsl_surf_ra_tlmres_2579_2713_v1.bc: 0%| | 4.00k/1.86M [00:00<01:14, 26.0kB/s]\n\nmsl_surf_rover_tlm_2579_2713_v1.bc: 1%|▏ | 4.00k/318k [00:00<00:12, 25.1kB/s][A\nmsl_surf_rsm_tlmenc_2579_2713_v1.bc: 1%| | 36.0k/4.08M [00:00<00:31, 133kB/s] \nmsl_surf_ra_tlmres_2579_2713_v1.bc: 2%|▏ | 36.0k/1.86M [00:00<00:14, 132kB/s] \nmsl_surf_rover_tlm_2579_2713_v1.bc: 11%|█▏ | 36.0k/318k [00:00<00:02, 131kB/s] \nmsl_surf_rsm_tlmres_2579_2713_v1.bc: 1%| | 36.0k/3.56M [00:00<00:28, 131kB/s] \nmsl_surf_rsm_tlmenc_2579_2713_v1.bc: 2%|▏ | 100k/4.08M [00:00<00:16, 260kB/s] A\nmsl_surf_ra_tlmres_2579_2713_v1.bc: 5%|▌ | 100k/1.86M [00:00<00:07, 259kB/s] \nmsl_surf_rover_tlm_2579_2713_v1.bc: 31%|███▏ | 100k/318k [00:00<00:00, 258kB/s] \nmsl_surf_rsm_tlmres_2579_2713_v1.bc: 3%|▎ | 100k/3.56M [00:00<00:14, 258kB/s] \nmsl_v08.tf: 100%|██████████| 201k/201k [00:00<00:00, 398kB/s] [00:00<00:08, 257kB/s] \nmsl_surf_ra_tlmenc_2579_2713_v1.bc: 7%|▋ | 212k/3.13M [00:00<00:06, 440kB/s]]\nmsl_surf_ra_tlmres_2579_2713_v1.bc: 11%|█ | 212k/1.86M [00:00<00:03, 440kB/s]\nmsl_surf_rover_tlm_2579_2713_v1.bc: 62%|██████▏ | 196k/318k [00:00<00:00, 399kB/s]\nmsl_surf_rover_tlm_2579_2713_v1.bc: 100%|██████████| 318k/318k [00:00<00:00, 503kB/s]s]\n\nmsl_surf_rsm_tlmenc_2579_2713_v1.bc: 10%|█ | 436k/4.08M [00:00<00:04, 800kB/s]\nmsl_surf_ra_tlmres_2579_2713_v1.bc: 23%|██▎ | 436k/1.86M [00:00<00:01, 799kB/s]\nmsl_surf_rsm_tlmres_2579_2713_v1.bc: 12%|█▏ | 436k/3.56M [00:00<00:04, 798kB/s]\nmsl_hbra_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 15.7MB/s]6kB/s]\nmsl_surf_rsm_tlmenc_2579_2713_v1.bc: 21%|██ | 884k/4.08M [00:00<00:02, 1.51MB/s]\nmsl_surf_ra_tlmres_2579_2713_v1.bc: 46%|████▋ | 884k/1.86M [00:00<00:00, 1.50MB/s]\nmsl_surf_rsm_tlmres_2579_2713_v1.bc: 24%|██▍ | 884k/3.56M [00:00<00:01, 1.50MB/s]\nmsl_surf_rsm_tlmenc_2579_2713_v1.bc: 43%|████▎ | 1.74M/4.08M [00:01<00:00, 2.89MB/s]\nmsl_surf_ra_tlmres_2579_2713_v1.bc: 100%|██████████| 1.86M/1.86M [00:01<00:00, 1.74MB/s]\n\nmsl_surf_rsm_tlmres_2579_2713_v1.bc: 49%|████▉ | 1.74M/3.56M [00:01<00:00, 2.88MB/s]\nmsl_surf_hga_tlm_2579_2713_v1.bc: 100%|██████████| 2.17M/2.17M [00:01<00:00, 1.98MB/s]\nmsl_surf_ra_tlmenc_2579_2713_v1.bc: 100%|██████████| 3.13M/3.13M [00:01<00:00, 2.81MB/s]\nmsl_hflb_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 13.2MB/s]\nmsl_surf_rsm_tlmenc_2579_2713_v1.bc: 86%|████████▌ | 3.49M/4.08M [00:01<00:00, 5.62MB/s]\nmsl_surf_rsm_tlmres_2579_2713_v1.bc: 100%|██████████| 3.56M/3.56M [00:01<00:00, 2.91MB/s]\n\nmsl_aux_v00.ti: 100%|██████████| 11.3k/11.3k [00:00<00:00, 29.3MB/s]\nmsl_hfra_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 13.2MB/s]\nmsl_hblb_20120731_c03.ti: 100%|██████████| 7.76k/7.76k [00:00<00:00, 4.88MB/s]\nmsl_hbrb_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 14.4MB/s]\nmsl_hfla_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 14.0MB/s]\nmsl_mahli_20120731_c02.ti: 100%|██████████| 7.70k/7.70k [00:00<00:00, 14.0MB/s]\nmsl_chrmi_20120731_c03.ti: 100%|██████████| 7.38k/7.38k [00:00<00:00, 13.2MB/s]\nmsl_hbla_20120731_c03.ti: 100%|██████████| 7.76k/7.76k [00:00<00:00, 14.0MB/s]\nmsl_hfrb_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 13.9MB/s]\nmsl_nla_20120731_c04.ti: 100%|██████████| 7.70k/7.70k [00:00<00:00, 19.9MB/s]\nmsl_mardi_20120731_c02.ti: 100%|██████████| 7.62k/7.62k [00:00<00:00, 13.4MB/s]\nmsl_ml_20120731_c03.ti: 100%|██████████| 7.72k/7.72k [00:00<00:00, 15.9MB/s]\nmsl_mr_20120731_c03.ti: 100%|██████████| 7.72k/7.72k [00:00<00:00, 4.39MB/s]\nmsl_nra_20120731_c04.ti: 100%|██████████| 7.71k/7.71k [00:00<00:00, 14.6MB/s]\nmsl_nrb_20130530_c05.ti: 100%|██████████| 7.72k/7.72k [00:00<00:00, 13.9MB/s]\nmsl_struct_v01.ti: 100%|██████████| 10.3k/10.3k [00:00<00:00, 16.9MB/s]\nmsl_nlb_20130530_c05.ti: 100%|██████████| 7.72k/7.72k [00:00<00:00, 22.5MB/s]\nmsl_lmst_ops120808_v1.tsc: 100%|██████████| 5.80k/5.80k [00:00<00:00, 13.8MB/s]\nnaif0012.tls: 100%|██████████| 6.70k/6.70k [00:00<00:00, 9.87MB/s]\nmar085s.bsp: 0%| | 0/89539584 [00:00<?, ?it/s]0:00<?, ?it/s]\nmsl_ls_ops120808_iau2000_v1.bsp: 100%|██████████| 8.00k/8.00k [00:00<00:00, 15.9MB/s]\n\nmar085s.bsp: 0%| | 4.00k/85.4M [00:00<58:05, 25.7kB/s]<00:02, 25.6kB/s]\nmsl_76_sclkscet_refit_s8.tsc: 100%|██████████| 55.7k/55.7k [00:00<00:00, 178kB/s] \nmar085s.bsp: 0%| | 36.0k/85.4M [00:00<11:22, 131kB/s] \nmsl_surf_rover_loc_2224_2358_v1.bsp: 0%| | 0/256000 [00:00<?, ?it/s]\npck00008.tpc: 100%|██████████| 111k/111k [00:00<00:00, 236kB/s] 1kB/s] \nmar085s.bsp: 0%| | 84.0k/85.4M [00:00<07:02, 212kB/s]\nmsl_surf_rover_loc_2224_2358_v1.bsp: 2%|▏ | 4.00k/250k [00:00<00:09, 25.6kB/s]\nmsl_struct_v02.bsp: 100%|██████████| 102k/102k [00:00<00:00, 217kB/s] \nde425s.bsp: 1%| | 100k/8.84M [00:00<00:35, 259kB/s] \nmar085s.bsp: 0%| | 196k/85.4M [00:00<03:37, 411kB/s] [00:00<?, ?it/s]\nmsl_surf_rover_loc_2003_2127_v1.bsp: 0%| | 0/344064 [00:00<?, ?it/s]131kB/s] \nmar085s.bsp: 0%| | 420k/85.4M [00:00<01:54, 780kB/s]9M [00:00<01:45, 25.7kB/s]\nmsl_surf_rover_loc_2003_2127_v1.bsp: 1%| | 4.00k/336k [00:00<00:13, 25.7kB/s][A\nmsl_surf_rover_loc_0000_2003_v1.bsp: 1%|▏ | 36.0k/2.59M [00:00<00:20, 131kB/s] \nmar085s.bsp: 1%| | 852k/85.4M [00:00<01:00, 1.45MB/s]00:00<?, ?it/s]\nmsl_surf_rover_loc_2224_2358_v1.bsp: 100%|██████████| 250k/250k [00:00<00:00, 399kB/s] \nmsl_surf_rover_loc_2003_2127_v1.bsp: 11%|█ | 36.0k/336k [00:00<00:02, 131kB/s] \nmsl_surf_rover_loc_0000_2003_v1.bsp: 3%|▎ | 84.0k/2.59M [00:00<00:12, 212kB/s]\nmsl_surf_rover_loc_2003_2127_v1.bsp: 25%|██▌ | 84.0k/336k [00:00<00:01, 211kB/s]]\nmsl_surf_rover_loc_2837_2934_v1.bsp: 0%| | 0/225280 [00:00<?, ?it/s]\nmsl_surf_rover_loc_0000_2003_v1.bsp: 7%|▋ | 180k/2.59M [00:00<00:06, 371kB/s] \nmsl_surf_rover_loc_2003_2127_v1.bsp: 49%|████▉ | 164k/336k [00:00<00:00, 330kB/s] ]\nmsl_surf_rover_loc_2837_2934_v1.bsp: 2%|▏ | 4.00k/220k [00:00<00:08, 25.3kB/s]\nmsl_surf_rover_loc_2003_2127_v1.bsp: 100%|██████████| 336k/336k [00:00<00:00, 524kB/s]]\n\nde425s.bsp: 72%|███████▏ | 6.36M/8.84M [00:01<00:00, 9.82MB/s] [00:00<00:01, 131kB/s] [A\nmsl_surf_rover_loc_2837_2934_v1.bsp: 16%|█▋ | 36.0k/220k [00:00<00:01, 130kB/s] \nmsl_surf_rover_loc_0000_2003_v1.bsp: 29%|██▉ | 772k/2.59M [00:00<00:01, 1.32MB/s]\nmsl_surf_rover_loc_2579_2713_v1.bsp: 100%|██████████| 294k/294k [00:00<00:00, 468kB/s] \nde425s.bsp: 100%|██████████| 8.84M/8.84M [00:01<00:00, 6.16MB/s] [00:00<00:00, 211kB/s]\nmar085s.bsp: 14%|█▎ | 11.6M/85.4M [00:01<00:05, 15.1MB/s]0:00<?, ?it/s]\nmsl_surf_rover_loc_2837_2934_v1.bsp: 38%|███▊ | 84.0k/220k [00:00<00:00, 211kB/s]\nmsl_surf_rover_loc_2127_2224_v1.bsp: 100%|██████████| 206k/206k [00:00<00:00, 329kB/s] s]\nmsl_surf_rover_loc_0000_2003_v1.bsp: 100%|██████████| 2.59M/2.59M [00:01<00:00, 2.29MB/s]\nmsl_surf_rover_loc_2358_2482_v1.bsp: 1%|▏ | 4.00k/270k [00:00<00:10, 25.8kB/s]\nmsl_surf_rover_loc_2837_2934_v1.bsp: 100%|██████████| 220k/220k [00:00<00:00, 350kB/s] \nmsl_surf_rover_loc_2713_2837_v1.bsp: 1%| | 4.00k/333k [00:00<00:13, 25.6kB/s]\nmsl_surf_rover_loc_3192_3289_v1.bsp: 0%| | 0/313344 [00:00<?, ?it/s]\nmsl_surf_rover_loc_2358_2482_v1.bsp: 100%|██████████| 270k/270k [00:00<00:00, 431kB/s] \nmar085s.bsp: 29%|██▉ | 24.9M/85.4M [00:02<00:03, 19.0MB/s][00:00<00:02, 131kB/s] \nmsl_surf_rover_loc_2934_3068_v1.bsp: 0%| | 0/423936 [00:00<?, ?it/s]25.4kB/s]\nmsl_surf_rover_loc_3068_3192_v1.bsp: 1%| | 4.00k/355k [00:00<00:14, 25.6kB/s]\nmar085s.bsp: 31%|███ | 26.1M/85.4M [00:02<00:03, 17.0MB/s]0:00<?, ?it/s]\nmsl_surf_rover_loc_2713_2837_v1.bsp: 25%|██▌ | 84.0k/333k [00:00<00:01, 211kB/s]\nmsl_surf_rover_loc_2934_3068_v1.bsp: 1%| | 4.00k/414k [00:00<00:16, 25.7kB/s]\nmsl_surf_rover_loc_3068_3192_v1.bsp: 10%|█ | 36.0k/355k [00:00<00:02, 131kB/s] \nmar085s.bsp: 33%|███▎ | 28.5M/85.4M [00:02<00:03, 18.7MB/s][00:00<00:08, 25.7kB/s]\nmsl_surf_rover_loc_2713_2837_v1.bsp: 100%|██████████| 333k/333k [00:00<00:00, 527kB/s] ]\n\nmsl_surf_rover_loc_2934_3068_v1.bsp: 9%|▊ | 36.0k/414k [00:00<00:02, 131kB/s] [A\nmsl_surf_rover_loc_3068_3192_v1.bsp: 28%|██▊ | 100k/355k [00:00<00:01, 258kB/s] \nmar085s.bsp: 37%|███▋ | 31.8M/85.4M [00:02<00:03, 17.1MB/s][00:00<00:01, 131kB/s] \nmsl_surf_rover_loc_3547_3644_v1.bsp: 11%|█▏ | 36.0k/314k [00:00<00:02, 131kB/s] \nmsl_surf_rover_loc_3192_3289_v1.bsp: 100%|██████████| 306k/306k [00:00<00:00, 485kB/s] \nmsl_surf_rover_loc_2934_3068_v1.bsp: 20%|██ | 84.0k/414k [00:00<00:01, 211kB/s]\nmsl_surf_rover_loc_3068_3192_v1.bsp: 100%|██████████| 355k/355k [00:00<00:00, 565kB/s]\n\nmsl_surf_rover_loc_3423_3547_v1.bsp: 0%| | 0/391168 [00:00<?, ?it/s]212kB/s]\nmsl_surf_rover_loc_2934_3068_v1.bsp: 43%|████▎ | 180k/414k [00:00<00:00, 371kB/s] \nmsl_surf_rover_loc_2482_2579_v1.bsp: 100%|██████████| 208k/208k [00:00<00:00, 332kB/s] \nmsl_surf_rover_loc_3423_3547_v1.bsp: 1%| | 4.00k/382k [00:00<00:15, 25.7kB/s]\nmsl_surf_rover_loc_3547_3644_v1.bsp: 100%|██████████| 314k/314k [00:00<00:00, 501kB/s] \nmsl_surf_rover_loc_2934_3068_v1.bsp: 100%|██████████| 414k/414k [00:00<00:00, 529kB/s]\nmsl_surf_rover_loc_3423_3547_v1.bsp: 100%|██████████| 382k/382k [00:00<00:00, 606kB/s] ]\nmsl_surf_rover_loc_3289_3423_v1.bsp: 10%|█ | 36.0k/356k [00:00<00:02, 131kB/s] \nmar085s.bsp: 57%|█████▋ | 48.5M/85.4M [00:03<00:02, 16.5MB/s]0:00<?, ?it/s]\nmsl_surf_rover_loc_3289_3423_v1.bsp: 24%|██▎ | 84.0k/356k [00:00<00:01, 212kB/s]\nmsl_surf_rover_loc_3778_3902_v1.bsp: 1%| | 4.00k/354k [00:00<00:13, 25.7kB/s]\nmsl_surf_rover_loc_3289_3423_v1.bsp: 100%|██████████| 356k/356k [00:00<00:00, 566kB/s] ]\n\nmar085s.bsp: 64%|██████▎ | 54.3M/85.4M [00:04<00:01, 16.9MB/s][00:00<00:02, 131kB/s] \nmar085s.bsp: 67%|██████▋ | 56.8M/85.4M [00:04<00:01, 19.1MB/s][00:00<00:02, 131kB/s] \nmsl_surf_rover_loc_3778_3902_v1.bsp: 24%|██▎ | 84.0k/354k [00:00<00:01, 211kB/s]\nmar085s.bsp: 69%|██████▉ | 58.9M/85.4M [00:04<00:01, 20.0MB/s][00:00<00:01, 210kB/s]\nmar085s.bsp: 70%|███████ | 59.8M/85.4M [00:04<00:01, 16.5MB/s]00:00<00:00, 371kB/s] \nmsl_surf_rover_loc_3778_3902_v1.bsp: 100%|██████████| 354k/354k [00:00<00:00, 557kB/s] \nmar085s.bsp: 73%|███████▎ | 62.7M/85.4M [00:04<00:01, 19.6MB/s]\nmsl_surf_rover_loc_3644_3778_v1.bsp: 100%|██████████| 363k/363k [00:00<00:00, 462kB/s]\nmar085s.bsp: 100%|██████████| 85.4M/85.4M [00:05<00:00, 15.3MB/s]\n\n\n\nimport spiceypy as spice\n\n\nspice.furnsh(str(mkpath))\n\n\nmkpath\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/msl/msl_v34_200101_200105.tm')\n\n\n\n!cat {mkpath}\n\nKPL/MK\n\n This meta-kernel lists a subset of kernels from the meta-kernel\n msl_v34.tm provided in the MSL-M-SPICE-6-V1.0 SPICE PDS3 archive,\n covering the whole or a part of the customer requested time period\n from 2020-01-01T00:00:00.000 to 2020-01-05T00:00:00.000.\n\n The documentation describing these kernels can be found in the\n complete MSL-M-SPICE-6-V1.0 SPICE PDS3 archive available at this URL\n\n https://naif.jpl.nasa.gov/pub/naif/pds/data/msl-m-spice-6-v1.0/mslsp_1000\n\n To use this meta-kernel users may need to modify the value of the\n PATH_VALUES keyword to point to the actual location of the archive's\n ``data'' directory on their system. Replacing ``/'' with ``\\''\n and converting line terminators to the format native to the user's\n system may also be required if this meta-kernel is to be used on a\n non-UNIX workstation.\n\n This meta-kernel was created by the NAIF node's SPICE PDS archive\n subsetting service version 2.1 on Fri Dec 1 09:03:32 PST 2023.\n\n \n \\begindata\n \n PATH_VALUES = (\n '/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/msl'\n )\n \n PATH_SYMBOLS = (\n 'KERNELS'\n )\n \n KERNELS_TO_LOAD = (\n '$KERNELS/lsk/naif0012.tls'\n '$KERNELS/pck/pck00008.tpc'\n '$KERNELS/sclk/msl_lmst_ops120808_v1.tsc'\n '$KERNELS/sclk/msl_76_sclkscet_refit_s8.tsc'\n '$KERNELS/fk/msl_v08.tf'\n '$KERNELS/ik/msl_aux_v00.ti'\n '$KERNELS/ik/msl_chrmi_20120731_c03.ti'\n '$KERNELS/ik/msl_hbla_20120731_c03.ti'\n '$KERNELS/ik/msl_hblb_20120731_c03.ti'\n '$KERNELS/ik/msl_hbra_20120731_c03.ti'\n '$KERNELS/ik/msl_hbrb_20120731_c03.ti'\n '$KERNELS/ik/msl_hfla_20120731_c03.ti'\n '$KERNELS/ik/msl_hflb_20120731_c03.ti'\n '$KERNELS/ik/msl_hfra_20120731_c03.ti'\n '$KERNELS/ik/msl_hfrb_20120731_c03.ti'\n '$KERNELS/ik/msl_mahli_20120731_c02.ti'\n '$KERNELS/ik/msl_mardi_20120731_c02.ti'\n '$KERNELS/ik/msl_ml_20120731_c03.ti'\n '$KERNELS/ik/msl_mr_20120731_c03.ti'\n '$KERNELS/ik/msl_nla_20120731_c04.ti'\n '$KERNELS/ik/msl_nlb_20130530_c05.ti'\n '$KERNELS/ik/msl_nra_20120731_c04.ti'\n '$KERNELS/ik/msl_nrb_20130530_c05.ti'\n '$KERNELS/ik/msl_struct_v01.ti'\n '$KERNELS/spk/msl_struct_v02.bsp'\n '$KERNELS/spk/de425s.bsp'\n '$KERNELS/spk/mar085s.bsp'\n '$KERNELS/spk/msl_ls_ops120808_iau2000_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_0000_2003_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2003_2127_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2127_2224_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2224_2358_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2358_2482_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2482_2579_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2579_2713_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2713_2837_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2837_2934_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_2934_3068_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_3068_3192_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_3192_3289_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_3289_3423_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_3423_3547_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_3547_3644_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_3644_3778_v1.bsp'\n '$KERNELS/spk/msl_surf_rover_loc_3778_3902_v1.bsp'\n '$KERNELS/ck/msl_ra_toolsref_v1.bc'\n '$KERNELS/ck/msl_surf_hga_tlm_2579_2713_v1.bc'\n '$KERNELS/ck/msl_surf_ra_tlmenc_2579_2713_v1.bc'\n '$KERNELS/ck/msl_surf_ra_tlmres_2579_2713_v1.bc'\n '$KERNELS/ck/msl_surf_rover_tlm_2579_2713_v1.bc'\n '$KERNELS/ck/msl_surf_rsm_tlmenc_2579_2713_v1.bc'\n '$KERNELS/ck/msl_surf_rsm_tlmres_2579_2713_v1.bc'\n )\n \n \\begintext" + }, + { + "objectID": "tutorials/apps_demo.html", + "href": "tutorials/apps_demo.html", + "title": "PlanetaryPy Demo", + "section": "", + "text": "from planetarypy import utils\n\n\nDo you remember that the string conversion code for “day-of-year” is %j ?\n\n\nDo we want newcomers search for that in Python docs?\n\n\ntimes = [\"2002-137\", \"2005-234T13:00:00.123\"]\n\n\nisotimes = [utils.nasa_time_to_iso(t) for t in times]\nisotimes\n\n['2002-05-17', '2005-08-22T13:00:00.123000']\n\n\n\n[utils.iso_to_nasa_time(t) for t in isotimes]\n\n['2002-137', '2005-234T13:00:00.123000']\n\n\n\n\n\n\nutils.check_url_exists(\"https://michaelaye.github.io\")\n\nTrue\n\n\n\nutils.check_url_exists?\n\n\nSignature: utils.check_url_exists(url)\nDocstring: <no docstring>\nFile: ~/Dropbox/src/nbplanetary/planetarypy/utils.py\nType: function\n\n\n\n\nutils.have_internet()\n\nTrue\n\n\n\nutils.url_retrieve(\n \"https://michaelaye.github.io/talks/2021-conda-workshop-kharkiv/conda_talk_Kharkiv_conference.pdf\",\n \"talk_slides.pdf\",\n)" + }, + { + "objectID": "tutorials/apps_demo.html#time-and-network-utils", + "href": "tutorials/apps_demo.html#time-and-network-utils", + "title": "PlanetaryPy Demo", + "section": "", + "text": "from planetarypy import utils\n\n\nDo you remember that the string conversion code for “day-of-year” is %j ?\n\n\nDo we want newcomers search for that in Python docs?\n\n\ntimes = [\"2002-137\", \"2005-234T13:00:00.123\"]\n\n\nisotimes = [utils.nasa_time_to_iso(t) for t in times]\nisotimes\n\n['2002-05-17', '2005-08-22T13:00:00.123000']\n\n\n\n[utils.iso_to_nasa_time(t) for t in isotimes]\n\n['2002-137', '2005-234T13:00:00.123000']\n\n\n\n\n\n\nutils.check_url_exists(\"https://michaelaye.github.io\")\n\nTrue\n\n\n\nutils.check_url_exists?\n\n\nSignature: utils.check_url_exists(url)\nDocstring: <no docstring>\nFile: ~/Dropbox/src/nbplanetary/planetarypy/utils.py\nType: function\n\n\n\n\nutils.have_internet()\n\nTrue\n\n\n\nutils.url_retrieve(\n \"https://michaelaye.github.io/talks/2021-conda-workshop-kharkiv/conda_talk_Kharkiv_conference.pdf\",\n \"talk_slides.pdf\",\n)" + }, + { + "objectID": "tutorials/apps_demo.html#pds-indexes", + "href": "tutorials/apps_demo.html#pds-indexes", + "title": "PlanetaryPy Demo", + "section": "PDS Indexes", + "text": "PDS Indexes\n\nfrom planetarypy.pds.apps import find_indexes, get_index, find_instruments\n\n\nfind_indexes?\n\n\nSignature: find_indexes(instrument: str) -> list\nDocstring: Find existing indexes for an instrument.\nFile: ~/Dropbox/src/nbplanetary/planetarypy/pds/apps.py\nType: function\n\n\n\n\nfind_indexes('cassini.uvis')\n\n['index',\n 'moon_summary',\n 'ring_summary',\n 'saturn_summary',\n 'supplemental_index',\n 'versions']\n\n\n\nfind_indexes('go.ssi') # Galileo orbiter SSImager\n\n['edr']\n\n\n\nget_index?\n\n\nSignature:\nget_index(\n instr: str,\n index_name: str = '',\n refresh: bool = True,\n force: bool = False,\n) -> pandas.core.frame.DataFrame\nDocstring: Example: get_index(\"cassini.iss\", \"index\")\nFile: ~/Dropbox/src/nbplanetary/planetarypy/pds/apps.py\nType: function\n\n\n\n\nget_index(\"cassini.uvis.ring_summary\")\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nRING_OBSERVATION_ID\nMINIMUM_RIGHT_ASCENSION\nMAXIMUM_RIGHT_ASCENSION\nMINIMUM_DECLINATION\nMAXIMUM_DECLINATION\nMINIMUM_RING_RADIUS\nMAXIMUM_RING_RADIUS\nFINEST_RING_INTERCEPT_RESOLUTION\n...\nRING_CENTER_DISTANCE\nSUB_SOLAR_RING_LONGITUDE\nSUB_OBSERVER_RING_LONGITUDE\nRING_CENTER_PHASE_ANGLE\nRING_CENTER_INCIDENCE_ANGLE\nRING_CENTER_NORTH_BASED_INCIDENCE_ANGLE\nRING_CENTER_EMISSION_ANGLE\nRING_CENTER_NORTH_BASED_EMISSION_ANGLE\nSOLAR_RING_OPENING_ANGLE\nOBSERVER_RING_OPENING_ANGLE\n\n\n\n\n0\nCOUVIS_0006\nDATA/D2004_002/EUV2004_002_12_16.LBL\nS/CO/UVIS/2004-002T12-16/EUV\n34.154493\n37.815141\n9.679762\n9.712415\n1074925.366\n3066570.289\n87709.0\n...\n86724352.465\n283.109\n215.938\n62.786\n64.404\n115.596\n73.661\n106.339\n-25.596\n-16.34\n\n\n1\nCOUVIS_0006\nDATA/D2004_002/EUV2004_002_12_32.LBL\nS/CO/UVIS/2004-002T12-32/EUV\n34.155557\n37.817313\n9.78073\n9.81348\n521741.812\n2900680.924\n87173.0\n...\n86719417.82\n283.109\n215.938\n62.787\n64.404\n115.596\n73.661\n106.339\n-25.596\n-16.34\n\n\n2\nCOUVIS_0006\nDATA/D2004_002/EUV2004_002_12_47.LBL\nS/CO/UVIS/2004-002T12-47/EUV\n34.154107\n37.816935\n9.877249\n9.909878\n64757.681\n2839690.546\n86667.0\n...\n86714483.175\n283.11\n215.938\n62.787\n64.404\n115.596\n73.661\n106.339\n-25.596\n-16.34\n\n\n3\nCOUVIS_0006\nDATA/D2004_002/EUV2004_002_13_03.LBL\nS/CO/UVIS/2004-002T13-03/EUV\n34.155193\n37.819152\n9.978176\n10.010898\n541745.355\n2872984.474\n86145.0\n...\n86709548.529\n283.11\n215.938\n62.787\n64.404\n115.596\n73.661\n106.339\n-25.596\n-16.34\n\n\n4\nCOUVIS_0006\nDATA/D2004_002/EUV2004_002_13_18.LBL\nS/CO/UVIS/2004-002T13-18/EUV\n34.157243\n37.822332\n10.077845\n10.110536\n1068459.125\n2999016.495\n85635.0\n...\n86704613.884\n283.111\n215.938\n62.788\n64.404\n115.596\n73.661\n106.339\n-25.596\n-16.34\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n167406\nCOUVIS_0060\nDATA/D2017_258/FUV2017_258_04_31.LBL\nS/CO/UVIS/2017-258T04-31/FUV\n355.156267\n93.92438\n-69.312846\n-14.507954\n126726.883\n1083278.078\n246.61634\n...\n263974.558\n178.948\n26.856\n99.681\n63.319\n63.319\n40.359\n40.359\n26.681\n49.641\n\n\n167407\nCOUVIS_0060\nDATA/D2017_258/FUV2017_258_07_00.LBL\nS/CO/UVIS/2017-258T07-00/FUV\n82.692823\n82.747154\n-4.328498\n-4.268149\n-999.0\n-999.0\n-999.0\n...\n251887.753\n178.949\n26.661\n99.192\n63.319\n63.319\n39.696\n39.696\n26.681\n50.304\n\n\n167408\nCOUVIS_0060\nDATA/D2017_258/FUV2017_258_07_15.LBL\nS/CO/UVIS/2017-258T07-15/FUV\n54.358671\n76.196366\n-4.007282\n13.298744\n-999.0\n-999.0\n-999.0\n...\n157806.504\n178.951\n68.04\n76.009\n63.319\n63.319\n34.946\n34.946\n26.681\n55.054\n\n\n167409\nCOUVIS_0060\nDATA/D2017_258/HDAC2017_258_02_14.LBL\nS/CO/UVIS/2017-258T02-14/HDAC\n129.674881\n143.379042\n-58.332263\n-48.522644\n204871.745\n219390.536\n17773.0\n...\n447586.578\n178.942\n9.923\n115.559\n63.319\n63.319\n53.073\n53.073\n26.681\n36.927\n\n\n167410\nCOUVIS_0060\nDATA/D2017_258/HDAC2017_258_02_15.LBL\nS/CO/UVIS/2017-258T02-15/HDAC\n92.532639\n116.78171\n-67.582806\n-63.392218\n98954.702\n230819.677\n12312.0\n...\n357220.013\n178.945\n15.877\n109.156\n63.319\n63.319\n47.62\n47.62\n26.681\n42.38\n\n\n\n\n167411 rows × 59 columns\n\n\n\n\nget_index('go.ssi.edr')\n\n\n\n\n\n\n\n\nSPACECRAFT_CLOCK_START_COUNT\nMISSION_NAME\nINSTRUMENT_ID\nDATA_SET_ID\nIMAGE_ID\nOBSERVATION_ID\nPRODUCT_TYPE\nTARGET_NAME\nIMAGE_TIME\nFILTER_NAME\n...\nSUB_SPACECRAFT_LINE\nSUB_SPACECRAFT_LINE_SAMPLE\nCENTER_RING_RADIUS\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nCOMPRESSION_TYPE\nENCODING_MIN_COMPRESSION_RATIO\nENCODING_MAX_COMPRESSION_RATIO\nENCODING_COMPRESSION_RATIO\nPROCESSING_HISTORY_TEXT\n\n\n\n\n0\n30611.0\nGALILEO\nSSI\nGO-V/E-SSI-2-REDR-V1.1\nUNK\nPOST_LAUNCH_CHECKOUT\nREDR\nBLACK_SKY\nNaT\nCLEAR\n...\n-999.0\n-999.0\n-999\nGO_0002\nRAW_CAL/C0003061100R.IMG\nNONE\n0.0\n0.0\n0.0\nVICAR programs run: CATLABEL,BADLABEL,COPY.\n\n\n1\n30612.0\nGALILEO\nSSI\nGO-V/E-SSI-2-REDR-V1.1\nUNK\nPOST_LAUNCH_CHECKOUT\nREDR\nBLACK_SKY\nNaT\nCLEAR\n...\n-999.0\n-999.0\n-999\nGO_0002\nRAW_CAL/C0003061200R.IMG\nNONE\n0.0\n0.0\n0.0\nVICAR programs run: CATLABEL,BADLABEL,COPY.\n\n\n2\n30613.0\nGALILEO\nSSI\nGO-V/E-SSI-2-REDR-V1.1\nUNK\nPOST_LAUNCH_CHECKOUT\nREDR\nBLACK_SKY\nNaT\nCLEAR\n...\n-999.0\n-999.0\n-999\nGO_0002\nRAW_CAL/C0003061300R.IMG\nNONE\n0.0\n0.0\n0.0\nVICAR programs run: CATLABEL,BADLABEL,COPY.\n\n\n3\n30614.0\nGALILEO\nSSI\nGO-V/E-SSI-2-REDR-V1.1\nUNK\nPOST_LAUNCH_CHECKOUT\nREDR\nBLACK_SKY\nNaT\nCLEAR\n...\n-999.0\n-999.0\n-999\nGO_0002\nRAW_CAL/C0003061400R.IMG\nNONE\n0.0\n0.0\n0.0\nVICAR programs run: CATLABEL,BADLABEL,COPY.\n\n\n4\n30619.0\nGALILEO\nSSI\nGO-V/E-SSI-2-REDR-V1.1\nUNK\nPOST_LAUNCH_CHECKOUT\nREDR\nBLACK_SKY\nNaT\nCLEAR\n...\n-999.0\n-999.0\n-999\nGO_0002\nRAW_CAL/C0003061900R.IMG\nNONE\n0.0\n0.0\n0.0\nVICAR programs run: CATLABEL,BADLABEL,COPY.\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n14904\n6006608.22\nGALILEO\nSSI\nGO-J/JSA-SSI-4-REDR-V1.0\n29N0033\n29NSFLTFLD03\nREDR\nNON_SCIENC\nNaT\nIR-7270\n...\n-999.0\n-999.0\n-999\nGO_0023\nG29/REPAIRED/C0600660822S.IMG\nINTEGER COSINE TRANSFORM\n38.918\n16.986\n76.488\nVICAR programs run:SSIMERGE,F2,FASTMOS,FASTMOS...\n\n\n14905\n6006608.23\nGALILEO\nSSI\nGO-J/JSA-SSI-4-REDR-V1.0\n29N0033\n29NSFLTFLD03\nREDR\nNON_SCIENC\nNaT\nIR-7270\n...\n-999.0\n-999.0\n-999\nGO_0023\nG29/REPAIRED/C0600660823S.IMG\nHUFFMAN\n0.0\n0.0\n0.0\nVICAR programs run:SSIMERGE,F2,FASTMOS,FASTMOS...\n\n\n14906\n6006609.68\nGALILEO\nSSI\nGO-J/JSA-SSI-4-REDR-V1.0\n29N0034\n29NSFLTFLD03\nREDR\nNON_SCIENC\nNaT\nIR-8890\n...\n-999.0\n-999.0\n-999\nGO_0023\nG29/REPAIRED/C0600660968S.IMG\nINTEGER COSINE TRANSFORM\n6.054\n4.92\n8.212\nVICAR programs run:SSIMERGE,F2,FASTMOS,FASTMOS...\n\n\n14907\n6006609.69\nGALILEO\nSSI\nGO-J/JSA-SSI-4-REDR-V1.0\n29N0034\n29NSFLTFLD03\nREDR\nNON_SCIENC\nNaT\nIR-8890\n...\n-999.0\n-999.0\n-999\nGO_0023\nG29/REPAIRED/C0600660969S.IMG\nHUFFMAN\n0.0\n0.0\n0.0\nVICAR programs run:SSIMERGE,F2,FASTMOS,FASTMOS...\n\n\n14908\n4203615.0\nGALILEO\nSSI\nGO-J/JSA-SSI-2-REDR-V1.0\n11I0003\n11ISECLIPS01\nREDR\nIO\nNaT\nCLEAR\n...\n254.092\n334.653\n-999\nGO_0023\nREDO/E11/IO/C0420361500R.IMG\nINTEGER COSINE TRANSFORM\n8.354\n6.843\n9.709\nVICAR programs run: SSIMERGE,UNMOSAIC,CATLABEL...\n\n\n\n\n14909 rows × 52 columns\n\n\n\n\nfind_indexes(\"cassini.iss\")\n\n['index', 'inventory', 'moon_summary', 'ring_summary', 'saturn_summary']\n\n\n\nget_index(\"cassini.iss.saturn_summary\")\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nOPUS_ID\nTARGET_NAME\nMINIMUM_PLANETOCENTRIC_LATITUDE\nMAXIMUM_PLANETOCENTRIC_LATITUDE\nMINIMUM_PLANETOGRAPHIC_LATITUDE\nMAXIMUM_PLANETOGRAPHIC_LATITUDE\nMINIMUM_IAU_LONGITUDE\nMAXIMUM_IAU_LONGITUDE\n...\nMAXIMUM_EMISSION_ANGLE\nSUB_SOLAR_PLANETOCENTRIC_LATITUDE\nSUB_SOLAR_PLANETOGRAPHIC_LATITUDE\nSUB_OBSERVER_PLANETOCENTRIC_LATITUDE\nSUB_OBSERVER_PLANETOGRAPHIC_LATITUDE\nSUB_SOLAR_IAU_LONGITUDE\nSUB_OBSERVER_IAU_LONGITUDE\nCENTER_RESOLUTION\nCENTER_DISTANCE\nCENTER_PHASE_ANGLE\n\n\n\n\n0\nCOISS_2001\ndata/1454725799_1455008789/N1454725799_1.LBL\nco-iss-n1454725799\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n-25.411\n-30.279\n-16.324\n-19.796\n107.986\n176.558\n424.67606\n70874998.947\n64.07\n\n\n1\nCOISS_2001\ndata/1454725799_1455008789/N1454726579_1.LBL\nco-iss-n1454726579\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n-25.411\n-30.279\n-16.324\n-19.796\n115.305\n183.877\n424.65121\n70870851.371\n64.07\n\n\n2\nCOISS_2001\ndata/1454725799_1455008789/N1454727359_1.LBL\nco-iss-n1454727359\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n-25.411\n-30.279\n-16.324\n-19.796\n122.625\n191.197\n424.62635\n70866703.094\n64.071\n\n\n3\nCOISS_2001\ndata/1454725799_1455008789/N1454728139_1.LBL\nco-iss-n1454728139\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n-25.411\n-30.279\n-16.324\n-19.796\n129.94\n198.513\n424.60151\n70862557.207\n64.071\n\n\n4\nCOISS_2001\ndata/1454725799_1455008789/N1454728919_1.LBL\nco-iss-n1454728919\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n-999.0\n-25.411\n-30.279\n-16.324\n-19.796\n137.264\n205.837\n424.57664\n70858406.794\n64.071\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n405116\nCOISS_2116\ndata/1884113741_1884114531/W1884114471_1.LBL\nco-iss-w1884114471\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n51.97\n26.682\n31.701\n29.262\n34.552\n263.715\n79.081\n75.81817\n634269.821\n123.878\n\n\n405117\nCOISS_2116\ndata/1884113741_1884114531/N1884114501_1.LBL\nco-iss-n1884114501\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n30.558\n26.682\n31.701\n29.269\n34.56\n263.996\n79.357\n7.59837\n634053.296\n123.87\n\n\n405118\nCOISS_2116\ndata/1884113741_1884114531/W1884114501_1.LBL\nco-iss-w1884114501\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n52.192\n26.682\n31.701\n29.27\n34.56\n264.004\n79.364\n75.79162\n634047.739\n123.87\n\n\n405119\nCOISS_2116\ndata/1884113741_1884114531/N1884114531_1.LBL\nco-iss-n1884114531\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n30.665\n26.682\n31.701\n29.277\n34.568\n264.278\n79.633\n7.59578\n633836.731\n123.863\n\n\n405120\nCOISS_2116\ndata/1884113741_1884114531/W1884114531_2.LBL\nco-iss-w1884114531\nSATURN\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n...\n52.474\n26.682\n31.701\n29.277\n34.568\n264.286\n79.641\n75.76561\n633830.161\n123.862\n\n\n\n\n405121 rows × 35 columns\n\n\n\n\nfind_indexes('mro.ctx')\n\n['edr']\n\n\n\nget_index('mro.ctx', 'edr', refresh=False)\n\n\n\n\n\n\n\n\nVOLUME_ID\nFILE_SPECIFICATION_NAME\nORIGINAL_PRODUCT_ID\nPRODUCT_ID\nIMAGE_TIME\nINSTRUMENT_ID\nINSTRUMENT_MODE_ID\nLINE_SAMPLES\nLINES\nSPATIAL_SUMMING\n...\nSUB_SOLAR_LATITUDE\nSUB_SPACECRAFT_LONGITUDE\nSUB_SPACECRAFT_LATITUDE\nSOLAR_DISTANCE\nSOLAR_LONGITUDE\nLOCAL_TIME\nIMAGE_SKEW_ANGLE\nRATIONALE_DESC\nDATA_QUALITY_DESC\nORBIT_NUMBER\n\n\n\n\n0\nMROX_0001\nDATA/CRU_000001_9999_XN_99N999W.IMG\n4A_04_0001000400\nCRU_000001_9999_XN_99N999W\n2005-08-30 15:40:21.549\nCTX\nNIFL\n5056\n1024\n1\n...\n0.0\n0.0\n0.0\n0.0\n278.89\n10.16\n0.0\nInstrument checkout image of space\nOK\n-4242\n\n\n1\nMROX_0001\nDATA/CRU_000002_9999_XN_99N999W.IMG\n4A_04_0001000500\nCRU_000002_9999_XN_99N999W\n2005-09-08 15:59:45.313\nCTX\nNIFL\n5056\n15360\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.6\n0.0\nCalibration image of the Moon\nOK\n-4126\n\n\n2\nMROX_0001\nDATA/CRU_000003_9999_XN_99N999W.IMG\n4A_04_0001000600\nCRU_000003_9999_XN_99N999W\n2005-09-08 16:03:37.927\nCTX\nNIFL\n5056\n2048\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.66\n0.0\nCalibration image of Omega Centauri (globular ...\nOK\n-4126\n\n\n3\nMROX_0001\nDATA/CRU_000004_9999_XN_99N999W.IMG\n4A_04_0001000700\nCRU_000004_9999_XN_99N999W\n2005-09-08 16:08:23.841\nCTX\nNIFL\n5056\n2048\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.74\n0.0\nCalibration image of Omega Centauri (globular ...\nOK\n-4126\n\n\n4\nMROX_0001\nDATA/CRU_000005_9999_XN_99N999W.IMG\n4A_04_0001000800\nCRU_000005_9999_XN_99N999W\n2005-09-08 16:11:18.649\nCTX\nNIFL\n5056\n21504\n1\n...\n0.0\n0.0\n0.0\n0.0\n284.48\n4.79\n0.0\nCalibration image of the Moon\nOK\n-4126\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n142363\nMROX_4656\nDATA/U17_077781_1107_XI_69S045W.IMG\n4A_04_118B04B300\nU17_077781_1107_XI_69S045W\n2023-03-01 00:01:37.834\nCTX\nITL\n5056\n7168\n1\n...\n12.74\n46.17\n-69.47\n243271024.8\n30.8\n15.42\n90.1\nSouthern autumn frost streak area in Viking 2 ...\nOK\n77781\n\n\n142364\nMROX_4656\nDATA/U17_077781_1560_XN_24S055W.IMG\n4A_04_118A04B400\nU17_077781_1560_XN_24S055W\n2023-03-01 00:15:17.076\nCTX\nNIFL\n5056\n30720\n1\n...\n12.74\n55.44\n-24.08\n243270437.8\n30.81\n14.96\n90.2\nRide-along with HiRISE\nOK\n77781\n\n\n142365\nMROX_4656\nDATA/U17_077781_1683_XN_11S057W.IMG\n4A_04_118A04B500\nU17_077781_1683_XN_11S057W\n2023-03-01 00:19:04.486\nCTX\nNIFL\n5056\n31744\n1\n...\n12.74\n57.0\n-11.7\n243270441.7\n30.81\n14.91\n90.2\nTerrain north of Coprates Chasma\nOK\n77781\n\n\n142366\nMROX_4656\nDATA/U17_077781_2027_XI_22N061W.IMG\n4A_04_118B04B600\nU17_077781_2027_XI_22N061W\n2023-03-01 00:29:24.818\nCTX\nITL\n5056\n52224\n1\n...\n12.74\n61.25\n22.78\n243271031.7\n30.81\n14.82\n89.8\nKasei Valles region\nOK\n77781\n\n\n142367\nMROX_4656\nDATA/U17_077781_2440_XN_64N067W.IMG\n4A_04_118A04B700\nU17_077781_2440_XN_64N067W\n2023-03-01 00:43:08.662\nCTX\nNIFL\n5056\n7168\n1\n...\n12.74\n68.76\n64.02\n243272920.6\n30.82\n14.59\n89.9\nRide-along with HiRISE\nOK\n77781\n\n\n\n\n142368 rows × 51 columns\n\n\n\n\nfind_instruments('cassini')\n\n['iss', 'uvis']\n\n\n\nfind_instruments('mro')\n\n['hirise', 'ctx']\n\n\n\nfind_instruments('lro')\n\n['diviner', 'lola', 'lroc']" + }, + { + "objectID": "tutorials/apps_demo.html#instrument-data", + "href": "tutorials/apps_demo.html#instrument-data", + "title": "PlanetaryPy Demo", + "section": "Instrument data", + "text": "Instrument data\n\nfrom planetarypy.uvis import DataManager\n\n\nindex = get_index(\"cassini.uvis.index\")\n\n\nindex.tail()\n\n\n\n\n\n\n\n\nFILE_NAME\nOBSERVATION_TYPE\nSTART_TIME\nSTOP_TIME\nTARGET_NAME\nDATA_SET_ID\nSPACECRAFT_CLOCK_START_COUNT\nSPACECRAFT_CLOCK_STOP_COUNT\nINTEGRATION_DURATION\nCOMPRESSION_TYPE\n...\nSUB_SOLAR_LONGITUDE\nSUB_SPACECRAFT_LATITUDE\nSUB_SPACECRAFT_LONGITUDE\nPHASE_ANGLE\nEMISSION_ANGLE\nSOLAR_INCIDENCE_ANGLE\nCENTRAL_BODY_DISTANCE\nDWELL_TIME\nH_LEVEL\nD_LEVEL\n\n\n\n\n203240\n/COUVIS_0060/DATA/D2017_258/FUV2017_258_04_31.LBL\n<NA>\n2017-09-15 04:31:53.005\n2017-09-15 09:04:56.755\nSOLAR WIND\nCO-S-UVIS-2-CUBE-V1.4\n1/1884145299.160\nUNK\n8191.875\nSQRT_9\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n203241\n/COUVIS_0060/DATA/D2017_258/FUV2017_258_07_00.LBL\n<NA>\n2017-09-15 07:00:27.697\n2017-09-15 07:13:40.447\nSOLAR WIND\nCO-S-UVIS-2-SPEC-V1.4\n1/1884154214.096\nUNK\n2.625\nSQRT_9\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n203242\n/COUVIS_0060/DATA/D2017_258/FUV2017_258_07_15.LBL\n<NA>\n2017-09-15 07:15:04.442\n2017-09-15 10:31:51.692\nSOLAR WIND\nCO-S-UVIS-2-SPEC-V1.4\n1/1884155091.032\nUNK\n2.625\nSQRT_9\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n-999\n<NA>\n<NA>\n\n\n203243\n/COUVIS_0060/DATA/D2017_258/HDAC2017_258_02_14...\n<NA>\n2017-09-15 02:14:02.433\n2017-09-15 02:14:06.433\nSOLAR WIND\nCO-S-UVIS-2-SSB-V1.4\n1/1884137029.000\nUNK\n-999.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n1\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n\n\n203244\n/COUVIS_0060/DATA/D2017_258/HDAC2017_258_02_15...\n<NA>\n2017-09-15 02:15:25.058\n2017-09-15 02:17:33.058\nSOLAR WIND\nCO-S-UVIS-2-SSB-V1.4\n1/1884137111.160\nUNK\n-999.0\nNONE\n...\n-999.0\n-999.0\n-999.0\n-999.0\n-999.0\n-999\n-999.0\n32\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n\n\n\n\n5 rows × 28 columns\n\n\n\n\ndm = DataManager(\"EUV2017_258_07_00\")\n\n\ndm.calib_label_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2017_258_07_00/EUV2017_258_07_00_CAL_3.LBL')\n\n\n\ndm.raw_data_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2017_258_07_00/EUV2017_258_07_00.DAT')\n\n\n\ndm.raw_label_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2017_258_07_00/EUV2017_258_07_00.LBL')\n\n\n\nfrom planetarypy.hirise import ProductPathfinder\n\n\n\n\n\n\n\n\n\n\n\n\nppf = ProductPathfinder(\"PSP_003092_0985_RED\")\n\n\nppf.local_label_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/PSP_003092_0985/PSP_003092_0985_RED.LBL')\n\n\n\nppf.abrowse_path\n\nPath('EXTRAS/RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.abrowse.jpg')\n\n\n\nppf.homepage\n\n'https://uahirise.org/PSP_003092_0985'\n\n\n\nppf.nomap_jp2_url\n\nURL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.NOMAP.JP2')\n\n\n\nfrom planetarypy.hirise import RGB_NOMAP\n\n\nrgb = RGB_NOMAP(\"PSP_003092_0985\")\n\n\nrgb.local_path\n\nPath('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/PSP_003092_0985/PSP_003092_0985_RGB.NOMAP.JP2')" + }, + { + "objectID": "tutorials/spice_howtos.html", + "href": "tutorials/spice_howtos.html", + "title": "SPICE with planetarypy HOWTO", + "section": "", + "text": "from astropy import units as u\nfrom numpy.linalg import norm\n\nfrom planetarypy.spice.spicer import MoonSpicer, MarsSpicer\n\n\nmoon = MoonSpicer(\"2022-02-22\")\n\n\nmoon.time.isoformat()\n\n'2022-02-22T00:00:00'\n\n\n\nmoon.solar_constant\n\n\\(1388.4482 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmoon.set_spoint_by(lat=0, lon=0)\n\n\nmoon.aspect = 180\nmoon.tilt = 30\n\n\nmoon.F_flat\n\n\\(497.68762 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmoon.F_aspect\n\n\\(449.48514 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmoon.F_tilt\n\n\\(412.53511 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmoon.subsolar\n\narray([ 622.78676959, -1621.28270346, -46.23629622])\n\n\n\nmoon.local_soltime\n\n'16:35:58'\n\n\n\n# MoonSpicer returns km (as all calculations in SPICE do)\n# use astropy.units to convert to other values\nnorm(moon.body_to_object(\"EARTH\")[0]) * u.km\n\n\\(375365.92 \\; \\mathrm{km}\\)\n\n\n\n(norm(moon.body_to_object(\"MARS\")[0]) * u.km).to(u.AU)\n\n\\(2.0379563 \\; \\mathrm{AU}\\)\n\n\n\nmars = MarsSpicer()\n\n\nmars.utc\n\n'2023-06-27T18:37:50.876055'\n\n\n\nmars.l_s\n\n83.31658188802474\n\n\n\nmars.goto('inca')\n\n\nmars.spoint\n\n(220.09830399469547, -440.60853011059214, -3340.5081261541495)\n\n\n\nmars.aspect=180\nmars.tilt=30\n\n\nmars.F_flat\n\n\\(0 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmars.F_aspect\n\n\\(0 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmars.set_spoint_by(lat=0, lon=0)\n\n\nmars.F_flat\n\n\\(339.2043 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmars.F_tilt\n\n\\(397.92501 \\; \\mathrm{\\frac{W}{m^{2}}}\\)" + }, + { + "objectID": "tutorials/spice_howtos.html#surface-calculations-on-the-moon", + "href": "tutorials/spice_howtos.html#surface-calculations-on-the-moon", + "title": "SPICE with planetarypy HOWTO", + "section": "", + "text": "from astropy import units as u\nfrom numpy.linalg import norm\n\nfrom planetarypy.spice.spicer import MoonSpicer, MarsSpicer\n\n\nmoon = MoonSpicer(\"2022-02-22\")\n\n\nmoon.time.isoformat()\n\n'2022-02-22T00:00:00'\n\n\n\nmoon.solar_constant\n\n\\(1388.4482 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmoon.set_spoint_by(lat=0, lon=0)\n\n\nmoon.aspect = 180\nmoon.tilt = 30\n\n\nmoon.F_flat\n\n\\(497.68762 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmoon.F_aspect\n\n\\(449.48514 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmoon.F_tilt\n\n\\(412.53511 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmoon.subsolar\n\narray([ 622.78676959, -1621.28270346, -46.23629622])\n\n\n\nmoon.local_soltime\n\n'16:35:58'\n\n\n\n# MoonSpicer returns km (as all calculations in SPICE do)\n# use astropy.units to convert to other values\nnorm(moon.body_to_object(\"EARTH\")[0]) * u.km\n\n\\(375365.92 \\; \\mathrm{km}\\)\n\n\n\n(norm(moon.body_to_object(\"MARS\")[0]) * u.km).to(u.AU)\n\n\\(2.0379563 \\; \\mathrm{AU}\\)\n\n\n\nmars = MarsSpicer()\n\n\nmars.utc\n\n'2023-06-27T18:37:50.876055'\n\n\n\nmars.l_s\n\n83.31658188802474\n\n\n\nmars.goto('inca')\n\n\nmars.spoint\n\n(220.09830399469547, -440.60853011059214, -3340.5081261541495)\n\n\n\nmars.aspect=180\nmars.tilt=30\n\n\nmars.F_flat\n\n\\(0 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmars.F_aspect\n\n\\(0 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmars.set_spoint_by(lat=0, lon=0)\n\n\nmars.F_flat\n\n\\(339.2043 \\; \\mathrm{\\frac{W}{m^{2}}}\\)\n\n\n\nmars.F_tilt\n\n\\(397.92501 \\; \\mathrm{\\frac{W}{m^{2}}}\\)" + } +] \ No newline at end of file diff --git a/site_libs/bootstrap/bootstrap-icons.css b/site_libs/bootstrap/bootstrap-icons.css new file mode 100644 index 0000000..94f1940 --- /dev/null +++ b/site_libs/bootstrap/bootstrap-icons.css @@ -0,0 +1,2018 @@ +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: +url("./bootstrap-icons.woff?2ab2cbbe07fcebb53bdaa7313bb290f2") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-1::before { content: "\f2a5"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-1::before { content: "\f68a"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-1::before { content: "\f68d"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-1::before { content: "\f690"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-1::before { content: "\f695"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-1::before { content: "\f698"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-mortorboard-fill::before { content: "\f6a2"; } +.bi-mortorboard::before { content: "\f6a3"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-1::before { content: "\f6b6"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash-1::before { content: "\f6c2"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport-1::before { content: "\f6e0"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-ssd-fill::before { content: "\f6ed"; } +.bi-ssd::before { content: "\f6ee"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt-1::before { content: "\f759"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls-1::before { content: "\f769"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-1::before { content: "\f794"; } +.bi-1-circle-fill-1::before { content: "\f795"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-1::before { content: "\f79a"; } +.bi-2-circle-fill-1::before { content: "\f79b"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-1::before { content: "\f7a0"; } +.bi-3-circle-fill-1::before { content: "\f7a1"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-1::before { content: "\f7a6"; } +.bi-4-circle-fill-1::before { content: "\f7a7"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-1::before { content: "\f7ac"; } +.bi-5-circle-fill-1::before { content: "\f7ad"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-1::before { content: "\f7b2"; } +.bi-6-circle-fill-1::before { content: "\f7b3"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-1::before { content: "\f7b8"; } +.bi-7-circle-fill-1::before { content: "\f7b9"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-1::before { content: "\f7be"; } +.bi-8-circle-fill-1::before { content: "\f7bf"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-1::before { content: "\f7c4"; } +.bi-9-circle-fill-1::before { content: "\f7c5"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-1::before { content: "\f7d8"; } +.bi-c-circle-fill-1::before { content: "\f7d9"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-1::before { content: "\f7e4"; } +.bi-cc-circle-fill-1::before { content: "\f7e5"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-1::before { content: "\f7f8"; } +.bi-h-circle-fill-1::before { content: "\f7f9"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-1::before { content: "\f802"; } +.bi-p-circle-fill-1::before { content: "\f803"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-1::before { content: "\f80c"; } +.bi-r-circle-fill-1::before { content: "\f80d"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } diff --git a/site_libs/bootstrap/bootstrap-icons.woff b/site_libs/bootstrap/bootstrap-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..18d21d457558d4dc2e231a8f6ee585fada9c6bab GIT binary patch literal 164168 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%0D{F7My?sp4b~Pd<-wWT`E3Pn zWaSOhBDjy*BE%Yo+zu%yM&NTn{(cSkw8HgirH)ZNIy}WCShQc~eOrP5?NwHTj}(*0gT-ErfbLM=Pw-ppO{9at73h3&<$Ymji_cRQWvPIn?%tzc6`xzK3^UR_>F%ZE{Y$Sye#C5_F{MPz z_!&s+MB<93{^_ zc-f*<08KNoFpvpyrS?ejx%2PyBEGs-!F1HR|F2J zbMxFHw+7nc9n_|2wt8K!-5G$8!=tBo?8Cp;zhGTc*=WXx-tXy~>mYPxDnNlG4I;`yQ^6lLD#9byx~E=Xcgl$(N3 zP#>J>Efn;*?o0Yku5#k^OWI~>@puzZb)&$Gif~$zN!6~2e2Etu0$-Gs!nC5Asx~i) zs%FS-9a=N$lEfQ^)KWE7*K(p@s{gsNym{>CjAX-GU8&hWb*fw2l*Ko-5Jmigfc5GV z@qIO{uQ^B|-x--_EKZ7u5?_c`K);hD%Ew|;I2S2-no#pNE;#o# z+MN|%i7$Klh0drOV8?FejRIe3*mL&hi?w3I<);^`OACT3EYQ_XU`b4J2ty@jYMv=C zRPBas)r#JnSm}7=gKeH~Q%BPoL`Xo8n-+SSEr-fch!J`WvfRQQ6Yn`(Kg?tZ>h zt(G)*-f6sX7*gS!nR5?$;+$8kSqV<9BvXkGgco-JfGPQo{x;l&$}`5Caoiaa({gn zE`B{-r^h)W>91O%u`Wk2yX9ago^oQ0{+=Ktzc#(jAQgx;DMJ1Se>N+$tr)ibQmX7vXnD*&y?B~dzRJ!6VF*S z%WDdN+H2pSotA_{Cr%tbzJZV68+^=AczCubFW=ZVOLGoiY}n7ZvqEi) zSJ1Z$#~DE+@ryda4}snidAyK#w8q3=tRImZHNMc8pS9~tEl$qp-}Zs@u!AY5sD4Qc zLamS!yyqgx52Wkwo>>%t#OShrChwVIaVjUuMD1KZN^a<2mS{{nnXgVeAkjs^tA+dh zF*hs5t7c1%yR#(1f6f^2em%z(qEoytrdFF1`*qTY-OSpy^>2nSw93Mfn=DZJ%YG;8 z3((2srk@WZYX6o=AP7hsCdm&-J0@tOh_@@qH?(I2$!)k1Rc4SRtRLJ};9Xn+rt0XT zFMZk_-+9p<_$R=!C&-h{4cV;;vo3Wkd{vXafRO$s&p(dWAJrBdWA*CdoX}iq0350T zvP09*AL|HHjc{&R;r>q=aegDs%Ma46J;1^#J^*nc2$mJix;tVE){~WvN(`0Pdp8|r zaQzL!@i&Mb0(e?{HooENGQxUUl&;h~8Thx+5{}IJkOFcfVWxeLm?&Sxaf(mtHm7oB zZiZIPK9Q)mI*5&9Z|s|Cwzw4(bNm+$T%w#A>(=xThva4Y%uPfQYm%VBFcr>>b?d_^ zK3BuO7wOJ-%o2_H>mP*PkIU7<^`Yti9h?78?H7UH7(G-pkq(t>*Y=B1E|e9k{v5HH zk`)Qo_C^T~G^w^C{@wH=P~ot!o2RYe z5Y3m1w@)M)*>~PZk`0SVS`gx?xR~6gJ=v!9*aPykqi$TC@o>(s&x=PI*c*V}mznp* z$RW#T!Y<*SRM2&iuUwkBngUb^lCPr{)WS_8DGqv6kV}%xO9fdH7kEVyh-|_2$A{SC zb3!*^vvzeH*3BHg;xbXJE4xQUV{CL23tK2E>_1wENG1MM` zAbQ>zR|qJXh#U+fj-3zTjn{#PiDHZ`DuiqV524dPAHt@8{)>AHm)}X@o1=Bdef;A5 zc{(|3?gvlf&xRxV{g?adN8B&5FxoFsAhBiFY?s7Bw8}cd8*z^9=a2ayDj*MU*u`!b z<#CATAIP*VhP@4PxN4eZcMLfi?)711a&DPSaTeXHi&V~&VA-eD=>t4)!*jiMe<0U+ zPwrqM;Q_rbukhaxjvQatygEPUK7}!CB8udCQ`B|QEJ$jlS++s;I`alEN`iA}ifqpu zQD$rW+)87*Q~On3mUyD~8bq)cOuN%4ksQ%9r%3P1x#l7l^5QbBL9)<*FrJk#cU)cuFtoMoAZ7Dw%(9(r)eOb|nw&3tVjJrE*CV1*f(- zd0*rF+S|>Kw#(9VHveiFE72nu`S!$9_`4WS*8r|Nv!iZ97$$bHWrWzC9FOmxOZ5p} zb7)MbW#r?D=8%!|$Efpc2M?PAZh&(e=Y|rm9FNTbHwYrJ@fn*aYPNR=Z9LzTaSR3g zG2g3^asR_9*ADI13o)IzORfBoo}JMbX_=3Gt5L-OjyDMSfeU-|LgZ_x8Q>ASJwx3& zwXFW(1h$0^891UtW}J%;W$8!PV)Oq|n4{h>5%sdWIC5HJeFvI_T@TKo&u}j6-SJTq z9z}@6Yf{kbQRkzuF~VM$*vFT3aUDKB#{PH_@PD8??mhs<_VFE~ZoOkEhu+zQ%lvG;eV&^#$5o1tQ!$;PG^Z?yCtw?0)?$!socJeSvVR2D9MC=P~Q z@67NdcO)M{qvoZuS)|hM>j;<<+RhzrgGPS-6!#0I>f>WrJl~14 z0or{b9}rA{g_YPyniE!kK)=EHhw|4VcZ9o_`ylr#+}F8pr=$xKvDFEP*h~>|0(y7H zf3!0`07Gw$9%TY5dTDBkT;m0ek4VdFFoy$vctUiY5IE8KKA*lLrhoHxd`s*Rcndy4 z2v`nqz(>}z8cHw~4{sUfJ1WnD%VGB`&l^5*DZyofhyM&Yx z?mtjoPdpX+M3<;9rv^G5>ic(M#o{5ajvw#luJ?N$O=C!tz6J@-PLPgAqupf1g%b=A zR@Ob&qv>Jf0TyudUzGO#*enI=tr)zS!$^vcVEj=|G(_O|EW4_znaw%dDc&XLVcyJ((#dFV zgBs!k{YC?@5bxyf=ibKs$V48bgTmFAo~G+X;ogp@>&9!8FJ>t#Mkx%Q3**^h@k+fe z6+np?rNcooKNiOm#w#^Tbh~&gNa-zy{6u~%WalkWxYB<;jq6cy*secD$r}-p_k)g6 zTFeen3j50Z%#(YW$Mh_ZCSZCw1la)B{_~<_egoJ&iumESE_-{zQStO;8rjk zg`l1Fu=%Fnp4&mpPQn9$ftSQ$Ro6_O zL0_A;TMqPz%q}A<s`p6JmMCsXI{6Mu zeBWlO!8b#=3_(~Gboi6xZ7Irw-=co#1+GWeBS!Y$YX>#WHabeQ-IwO#?Ip`cce63H zA?Z58_-kRoXi*CDoW@c1kRVIjvP7YMs}DRJY_c|H(1{wD*u-)sSt1>`&#VGKX>ZVD<uk}3Cu;bdS3FNIuzq|E&d4Tv=ynqS$rfR6D{XC+!e8NjwHnr`_lhh||NAiCE^}p! zT3#sU`4#>IOaqh;l{()kkOB1c_?c5nIj`H~4Xv#ie0_EL=Ci%CkI&zDNUjaeymU>| z3I$C)w0Wd=w&%~|U{7`Ed*?8k0`z*2&K z-S7)@o2NJD=;0@z#o56vH?7jfwAGt#8O%OD=YKi3X=2k%mKI^o!TQD+@9W9U&Hz(| z6RJqK>mE|T&ms(nKZ#jIyswlhCn}{jkWQktkbJ>_WJ!SmyZL)lu zz}v?(S=Ns6Pf3bI76|-<6Z42H9|`lXk}9p^dV;`w7K;`+P9DX#4-Vn5yn;i!Lo`iM zv_EB*9OuuOZ6X8wtdj0g?(N*;u{c~MD7DlbzSZeEU8e<%*6MXT?LLS_urAj<W7@Xh-xN%SPu(&b)cz`K*LD++hx<2Tyh|O;@NmKJ{ zdH6*sYD`Z4s15&>O4CFX=S78-4%>>j0Jswc!!|L>sGt_|qNbXLb;L4ERTJ}Y2c9IR zZ3xmr#VVnrQPMO~(enB7Mme9?6j9S8TuCWeM^Ai(#oWy@L8mdfJj+nGS;FRT1XWW9 z0C--+#Y0sT1Y>c-ow8JwfWBvd#;s{`Ue%=>A*yOkxf_dy2pY6?XnDz$h$gDKg;D@C z2T>!ExwL%9(qnstFn83?a-XMBi%IFoMmfmwU~Bw{PavEVmlDID>-}CgkRI8eSoO=_ zhoAoRQkjh|`sui2n1xl@o}Qtp#fFd5Hb$?*BPIV6>=wGGKI52p)DE(IS+V3_=Q19= z{^pNGDaDfd_+#8Z<(}sLr7xGe!PckL=eipP!i@L?Z8L~Z8Sx1-N)Wm-;uAy)w5OyE zfpp@=)c4!szL38cPUTP;xESHC7P16c8n+Enn}~3mk%DwOOpA3o;*YRi0B}H$znH>l zpy#zPgRzgGxgi_MVYPN{B-F^c_9x%Omn`7n`_x*xLhBuFMcK8^+m=flD_);ap*GuL zR%0TS|1M|`o1nVSoDU3`|3LCNApP@xgK&5{w9)Kq-!qhNDMktO1|l2Jg}$kWpoZx?`OCb*sQkq&lVF6Dg=O5yHKY zK7;4lG&3I_D4KUH$FVL&sNQ6#EE*p?e{#3#ok#)h378xdlZl$`g+ z2JOvNJIGy3X=X2MQ*gH1hFYTEC`MdMPES8jObydhHMr|BD{ro7zNZ z41HCU8A;_XVf9y3`EfvVOBTNiJlkf^iO<391wWM#Ez$yZlkX2Z%3bAL%)b!C^y9i% zM`7M!(4bhQ8eR~u;_8a)X>C^!rmTmHRk1<-wop;5{C^b{sU&xns-l72|Ah3zd~v2q zQP1|H90i@i;byp-xd*wQgqAS723rU?$-*fH{WjRPtpRPjRiLQ{Jl81~cp4eQZ-6?t zhW^`=JUTFy?plGk8PD{hXS}uS*Tf#t08tIGT71}=5(KxcS6o~|(geZE7ewdRi6~$! zs)#YIib6oi1C>iqgUe%}ev$Bd889ReK|oKN#DiSu(*-a3Enf1;Z=VHS@e_zFL#!@! zZW<^2TVIE+c5XbEVs;^;7-9j`!cxW z$^{-#Nozu*6|{l%E4%9+HF#X5-2$5kEF~=QiG`$BF&rF=T=oWv+&Q||T~mP8-9C{3 zdq)&Q(Mv@0PFGY?(iPL2Ef>LRSP_*wtYY1fWl3@BR$jBqvz}TY#O~V!OpyzZVm)bq zt_?^k&I1m$FBpntDaIGT-~nsrh{)SSxSN*=5J)0LLFRV^lFJcchv%nwfv9}ArV+@f z_U=+@m3RTq?kcbT(+pqGAJ#0sHbQdMk(&AkgL#U>`Ym^I_hQbNL6q7(mgK#U%Xz&p zOwo79wW707(+TT8Qhyzmv2eOw z&u*H{{zRoD?BeaMW-6SP2Z$RZ-arumw4f+oLQYJOy`4sew$3e z9C?JsWCs50-jD;^NqVpyKT5N=#m~=_XBVbta#mTG=I3kW>E=`g5GyRyONA*=SnW4g z>Ill*lsB!2XL!qW>%gkQoL8Qag)P3AyG`+OHh-!qS*B(4XZ*S+--7uYE46g%fa^gI zi=TJ8=m6-oaFNgJVKrK%g^q!(veaF)3b|5!UfR0jj@#w=S}9ks4tHh8wtwu@!ZxFzlw=&5hQY6rct>tSuh4sE5^rR_Mh9dtjyAFgi?R`@(G zC7e8y`TZB?h?Xnx8vG|tIjW*6xuP(?urM!Jg|!)}zPQ?P$x>}~^XT;S(aqJ`PZ7JQ z7t4jbs_3Ld$_3pj<#UP(7X?){G)>o@pW9HJl4$2tLoJqJn3x8h$<+p5nJ-CGhaX`J z0Qkn9X%WL9xPHasl8sp)rpa4gf#>IlD$NUqr1ERLVrpd8r^OYZ1=h~%x=3^fk%LTv z^k{dmYm^*q*(rOitp%ZMf9jl}3nyL*f^_5kX!pxb6Z+k(SZx8w=;-!HhOjk^!sV>N6`n5y!*Lp$Fs zTDDcJyzzcgEL3gBEK^bGk7dj;!wq^q0}WbAtJCr*N#XC8S5{U!CmS1lclKll&f9CH ziv7b6Jn+MIrL-3KzH&sxdRMGg)+$d|y#QUpgM!I-UMI_ci;`3RTUmZxhd1GFFuuM9 za^y5fX_~7PBr@h-p(CG4sY->~(>|zb#&OliOJdnp)sllMT_G=t zG>IG>U`~V+rNE~x5ZRZ~^v z6Pl_k>S0C6%ksZf6jPSxCCQS+?@Cfpl;)^3#`0<#hy3T8Rw<=DZxUHRC(y1A(rDa!l+6i__2em7o!dh90efP1Yx$tQY*QYsFA6n*g zE)S!@<)-Lb@-o$NWAqy2V__ae(R&5KkG`owe_W(5nk~luE0yT0qHC2tsnR~g-{1o9@fHHckJs;= z&ZyrTTU3ck_dXM*K#3RaeInreWUbz%F`_qyE2gKsMqi1Te?&}1jGujdErb8JqSwTp zkLr<|+#&8E;A*a$hkT0&$80@dVRXggHc^FvudzRO=ktYsUG|atkm!dY@mT0 zU9Q96#}y!|jLBG#_dBI}sZ?(@ip9n>%RMfM)a8rIS$0uV^F^>#t=ao#EgL_V3wce> zAFkz0RhwNVJWqo2f@&5^{>6QtFmtt6!MXq8x6rDWwu1(klMR}DNR%tOM&wuI95tU; zo!sS|qZD{W&q+DCDvJeO%gH$j&hmtqngADaMUwKH@R@^uCj1do&Lwa=1GDM7)3{|} zM?vUjfAC@>bd4r~bal)CSCDdI{=l($kBF%#7Yqy|%1b=D!VVsn748k7mn3l+7i}*# z8VzKbW5|#52adok=Iee@cyJ!&=?jrm67YBs5Pe)8pmPEEsUX-@{-~>4_A06ZF1fA=_N#>*` zUARJb8oB^FZKcP2YXiqs+OpD;5uJeRcE_m`N(ld|>{Ds?321v6uxnE!mjTDWU|92S zp0^C5POaw)_}zP?wRy`V@W?U|6nepEQQU3Lc^(it#qf$B=L@=OS*l(zHQ9DaL2+)x zt2`jQ+_n_MqNvY@u|vTevjW!JD=-`V9`npWA}Kwoy#63Cl%7Za%R%6$!X4&r1YQ2V z-R6#iL`^hNTsR1%_;bU7@X9>b<6Z_9&0EKv4-OJ9!@~c)`^V2-^8VZVMOV0vj{BG9 zxpnRocNa*b2dJHQoyZvMEzo!NkCKm%lHsJfFJ!FmDzcHUXkLd1PagxT_#m)EW83Oj zzMSr!rWZ2q)(0_0v%S-cHb&XO*R;+#z3AgEYrjev$UB@qSrFTGAoWI~>pUTbBuF}4 z(~@~vqz9fCL>+D$gz$9tpw6B_@0$Rqmjsz!(A)fBjH&dBWS_Kn$IuJOz5wfEO#y(! zh{vB6V9xE+YSItWD(7CEr)yXk#HdiRpsIp9kvy1k+45G$3u$&7)9+KoCM0QktsnIv z#_A_xtLhu=mxXEze%eT*<${*i93z)gO-d#6LO=~*WI3XfZKzvlHgBoMCQXt`oLLvR z-5^Fjj^ZuECFmw#^(cf0n&~6_rvv0_`r%?Rz&Tpk3pAXV=qh7*+-}0oRNa>kFMJ=^ zYzj0%BR;z!w`O6Yn=$&8ntXn{!jDTHQZa zzg-h5bNTK~y682VIZdlJ;k9s_`||$8=7>2asgJPjAhm`I+!(@&rd zQ;dW&3@Rvpu+JGr&X`{wJP5hzrLY~_4iqn@QXtnM4sVN4EzvobPPT9i&INOy63&XS z{raJInzXIJZ>3O~)dW7fEn8mIv3OD>shj|I#cFA zSMz@7H)((4H)yxvM$R&nBC*1_DSu8y+w$kR&%Icd<$+JJ2W5zU{($G(gR)=Wc;FMT z7|y?^xL0y-;x5vROmcik(@`JJvKRv%ep&W>`Ua%+oVL>Mb&@iq>5V%RUqxEXYATT7 zaH(jjAP3k5A;Fm>MRLO?Rx$t2LaO1%4WlOH-v!*}feeUIn14yZKUY){POE_ZoUY+W zxE#>v6*AHES5oAgCZoaE_MDle)Vxf+g;{g*i!!1{PtzL*G%`lc+4mfnYb(odINluo z57uwE`yBs62Z!1iZkgZk122|rA6E@HD3Sfl-a5fSN#Q>mLrIWgI>H?22xn;Sk+fWl zOIo~()hFXLp!YgMPdP((UYQVrAC1H)-m+uJMRmbWex1DfUP9pA8k3rcj?Dz>P+Yze z@K%VPkQ(fo3RJ{v7#oju`f{AhwYgPp6K0#+X^u*oCM1vH6@6Ff1RK6OQJFrrWuYvi zT7~g)!Im)gQI-e6S02qrfni%GXnwCZyCtoZvn_jJ#XoPQwiRW}3G<=%q8X11|i^i|$}wm00gF z^MwL~&qr$kGkd4Y2B(*TuY`zz;}Z-Qd3Ixy_4e*^vs@AxUOdMiR5PI&bd0ZX&u@)e;8tjT`8UxBFDK1JO2{d}3B@XoNgu0q(n;+)V7tv)J-X*G z_P5dBK7T3Vq#cI0%KH2>dbMm^N)AD=HpJ#};lwhvM7?OT1;+e1c9Al_}C)Ic?znWix zzx)+dK8-Je!`9~JIrck|ef+cJW}M3rqg=V-hci%hZNV@Cj0N#{SBXORub-i@3SJlF z4-B`K(~WJoa01Whanh69J%v5Tup!gB?osVfxV~VSC0Yw~mG*I)0=jBi$BKrH8^mm* zc!3`2^>{Eb&c5>H2{s6{!O_P~lB?MS*9M^G)gug7o|yB*&vw@Nbu z+`l)@GB_YrEt+2A?*ooV;4;L`+vt{Jz>Tzxu50m}X(206tk6^T7(jhKx;+XPDL(PL zYo&N4hMoBSw4m?r;vV5X$vrta4l?*BUGY4bYaxxJ;qOQDU!1=(a2WB}6A{{K;hwb9 zF}&8oM^9%xIu@=I+!vyKZ{E{KuxgOkh{bH77b!?hg9~AU533dRq6+`$2bm8~@gvHQ zzeM-9adwpHhNa#KUe@~O{;xC-KYl_KF7o_EL5#l;zIqqjQ{gLrZ&(mVmWJviNw(8T zLis8B4*ykr3g(ByFYp7wkK#WI82>pG2N$S$o8H`<_beW^0p%6TB1`@?9G<}&6)PV5 zxeOd%q19?wri!LKNCm_7QcYcCFS&^J{IhrnTijtSzSqAG2Rmw;OUB(*FsgHCmm$;C z)}sZs==bORW?36o!$vQ&8=v#LCdTm8fPSs{`v-UFkTNvCUmfn-6YTvv?1NM@`?$qm z`R~|A0v7D=kqo*GwcQz}WU}pZ!*ory+X|>G4dLP?`@u$MY_x1mfSr>*lDH(C3{Tx% zIJ_I2ctbYMW|}KL&OR&#*E7SI^SLU)TZaPt$r<>2>3%R6nI~hTasqZU6L>WvyviAP zyyMY&aPHR@~98qzfSxrw$7wN#N>?~OIX_9A+IZujm7ryeM(PL}-FsbB>J5>rHzBz)ZcRcnpIEOMl24Hw zH#rAviDT*g7dThdp^F`s5f=K{%rloOozXD0CJlr`?`(X7#(AtN;mo=hz>-JZs=8G5 zt>frMZ0p8hFxX}t$AT}xc7X5j5&R2o#AGSk)6wKMsNFU?ab95JcPPYw?;h;~vK`VU zPyC%#xP7gkz47Da2-K|Gj)V0IF@O*6j@S=k(ayWa6TLqjoY1?R@WS_@KO02zePP_7 z-Dx|r(pK7?4MkSgK*ROAu6MKxxL#|uJI#}%>#h&h*E|QlTXS4*eXT#}_B+D^>)OmL z5yfUx6v^yN&Co^CJWN!DmAo^`kyf@%PUx~gAdoT{##xmMA5*G zQ{mbCk)=b+Q>K|Cl0w8{Q6!2)a;75c^MaEi9wXrL>~Bwnfs$ygs-A z8F$LISCMHjF%xxPHpm4jkLvJwJmjT2ObgRE8>*~GS90OGyk%=F=0~&X_4(L${&`%V zRJawK(|Q{;X5={Ta>jr%MW)+^%U&XBRlnEjpwrr4nDUc?-iYkfX*Dt5w3WLeDY9zN zb8}0KLyWOVsxc*qq9%O{cWtZkU#eFGA$&e}o<0$EfZhEduSw@sd|tYMwO|5$p8FbC zqM9p{F%6R37BXzs+o~ap4N?4S^mKgZd1{3}i%yZ}4fVLJ@dchPiY=t==}2G3HXUel zIcznauZe~x4#6VLIW50h@w3$A|4tl?Yu_XCU)L|En_NghRN5*;Fig?)o+{>tB+SF$ zHxvQ1(e~tIPC;TN9j~thhM>O3wyKkAnCCEdxT5O1`YcV!G1RWjl8^ZBP9$ZFYxH2F z+F7r*{TDwAZKvS+SOAj|+HKgb!_|{{K*H1?UC;GRg)6ENr9!M3>IKCx3WkB(ajr7Q z+EvAPnlM*ttWOS=lepKEK^|{G=(W7SF50ASw^$SQ&dxTrP%zk*prDmUnIAZ!*D~F$ zwn%v1Yg=dC z3)iccIgMN3mT0c$@ZAH}%?xY~`nbs##gEf1KIu2LBdxiL1zFGzZcuDhF^jKO$dtkXv$@Tjh?! zTzWTp!k83}t=M~gI|6YK z)V#YNGt}4$6Ec{)SQ(>Nok_74j7T|_6QV6gT+k1mh38!O?N7&mCc7Z!v0c%7O2Wis zqzG5Q3GB;rg zz#QF}%dy>A>nrrMwRVCiJr|~U*TaM-3jCtk?$9g&@Bpe*9T-twp2W1xm*fkDVq?mv zyXG4zOGVjmW}NB5p(%Iauv?NBR*KWBha_1#(kvQQ@q^CcqG~l(NJ*zwV#lx<^3t}}_(vKAjnpQG8^P)N5)LH-cB{^WwqbR0c~1B?-%|2r(L@c`FNrlI2uN#k`@qq-+##0r(UODVb3f zU8{P9%2duRH#X`3GGp6hMgt?x5LI$i)~8D|ZABK;ya|7&_xS!VW)7*6 zc=wbDHXA(hNgH~s6mKT(bV+n-#l_vf4sE$9svB@NmT@UWNsJVkk}u5Z3L+X~F}uMe z_ap(~NsKq3Ceo}DEK@MO1}e(hG%a{pZJ|nemb3-Np!Mwt0MJ=%x0L}<6L-9yHHh@^6|$6q ziKX+5!_)wM>e8hk|1*8Y~=}1!EG9Q23w7vrR-$@ZOn>89>@+u;hqG{W92+uO; z#C_%uZzOc#09O%?eBBt()K|K_AW1vem^(6sOdkmpD8;W;_y@1hgce_VO#Df*gaAI7 z1>BRSm6x7>5)t`~9oK~&v`z*Nay%_U(hHN3wx}-Mnxn3zxhG|4&;(%QZH6tH*YMh3 z(d-RVTaIAn6eVX0j%7aaglRn+<>ZXoVpdA88*bKQFQ*$g;eex(RsjjKdOf-A_n)-` z9o`PWc!cKi=tFZ)v8JGh0T6%k6h8e_IEHWzwnDF3F9?!zh(hOwW_7whU2R_QMgMDS zjYjRYhtW3#auaJ&ssQL&EwbWyzk8mgW*tH*{Lp7OZB;_xq1oCP+?)% zo2z&2>SFK4jaqHv#@=Gp26g3-k4Zpk#0M?X;Bwqdu%78x1sbHYuRbPQ@_QwstN#V8 zbxAeUt0>9fK%i%jNN5*Jx2R!SPcimxi<`ylSjqQ$okDse(gK*G$!7lUz3+8nEh$&8 z##%EUdE{8wV5t<(3;q8w_a;D+T-RY>{-6Kn&#N-Cj?C=pqxz_+s_8kpr@OkldN6|- z%m9M{P`EK50fGQwlHyPVNDWBv0@oDD0cBYdWXlrAx@<_6JhT%DhSe}hYCX4m3>Q8>Oog2j?ME$uSJGF1jh zR4TB(49izJmajgm;|IwLo?S%i0S3aO49jm)n*J@0O-nD=(ZYu7dG2k+`{j*X? zcJm+>`u`l*SxZ5R56@&z%c*@eiL5?UI9)uxheDNY?~f&gl1$u48iGxf6NeL9B~o$F zzCMx&Vk9L#YRWil23V4Y{{l@nK0{HUq}?bMI4n5-cBTAHC;Thi$giq;Q3xsG$h?Rd>!S8{SiJF=&Z3+ad_ja zU~D?QlRd1gkD9Id&~9+2veaNSi1Wdh_t>-+)MMLsWBYk(8wjjnQ(&Nv8FuXYc3cl? zbb{{dAbBp#mOBNI2fYG1Iq*vfe{~G{@5y2Iat@Pn>R&73k;Bj^;w0XA8|=hW6m4lw-rfpskG4>OjH-#OG8|`z){OXDGmu_FL)Z-eMtd{43 zF~ZFwiWMKG;NLqGO%>bYfEfpa11@j`yhjbLoAA(ng4@ipZHw6!=Q}2Ec-0`NdJS%B zYF4bGRJ9D|xhMF2LGa&BBy zNue{aUx9+mg#FHeq;Ty=^3>d_`<33{?BIx7UEg0O{K$o^hI{P%-FF=KYIFQfu-gtM z<$X$+p)BMaykt{H!s_NmfvR~~yZ}DwnMqlUw*8hNyT$?q8_9lC;h-r0VOW&OIyWo; z2Jro`uDd6;Pk>sr_*b~KoW8H;gfh+s#=hRbEq5`8Ma^c!98egi(sx~hOvs00+P-%8 zO!+VYufiuqr|_y=NW4@8{(~7>!|Z9fgm@{B$W9JJH}`y8AFiPfJVhTCMoCQ9gZr7n zeqoCCdvBth`-#dMwnjERPJYHBJ6SK^RR1fR6p(kqi`=-$E5~a+q)qG%zMie!4b2+meiuF3Gny}D6CnZy< z)ex)CcDgeF%o_>`gn4Z{1|uV|`NyE-IT%OwO~EqgbaJ#!CDAIIE1IQ0RlZJsBlPhl^m-?wusdse0N}4zU6?j2rH%+5i2xF;6WmS5v*z5O z;W6el0{8X;S~@B4eieA?E*TjB=19Pk@UG#!P8r2a$5*Imn;HtRmmFB=uEoU~x0D`0 zo2N%`rcsV1$K1Bd@G_`lZ<~Pm&t>T3mg&<8^zaLC`N%kea|-eOTn${t8e{u>UDmdi z?sJUy6$pUV9wr%*cX3+mTG@Ut3FbU4H<7Z#s4&rt$Z!3mcJd@u`$gg9GkO+%1Z4q$ zzoQ(n$-Q&WyWcx|ExLVO<#7Yd{?1HwJCMdAGeSbHrvPvol@T~RrAT+Wf z05E|>*w|LpP+hN~f9-2}qw@BD`grXNtZsjX2cC#;d|Xs}YZg3pu^)uMG2Ny`NEM91 zW=Nt1uM!f^6aiUmA6X)cYxhTjIYd+|Pd!zs{-dwn=?rbx^J{A^^T^Y8>SpzP04|SV zc&_dGg4^plt5j&MxiF{Cd5-Sst1Y(FUY#?U?+I+hHL58QT1#66o9}zIPmSt;2T6}a zAiy9VWQAouxt*rrQ89M12+6REWat$J$ExDD_C}hM!rH<gjgmLPGHjvx92bsfr^sT zuE3}N`a{`~dXMHiBCa!`m8|z^ZFr08JsYFh z>v&@ZPKQ{u`)4CpwnnFKag9X2g7A>bb2Vw&c$)D;Elf2De@(8%-QU4l6d*tJGUQ;t zwFRhVF+5R1_kHln52k#Uzt|o=Y3^61-Ei?pc;s zr#po9zq%3JS8wdwE+MYH->8c_s=>xr`?p!OrCK8l8}LiZ*K+yV7WxgPQwL)s1VTj_ zrS^bQVyA~jELK+L5GYI_Jj?d);Kq>J;-+EKp~3IiXJ;MpLIL!`JVJKFw%49JYML8( zjDEv3k3P3%+ecuj_X~hCIh*AqSqHjfAA#khssW33V&GFOpT#n?UIKDw(EBB;W?i$K zFV4+<5p3b-o+DtHgzoRV;oIMW7e^R7%WJlApXc3Y*foCpxwGM8kAYpadiItBJa!NM!W^)6~4wH&eA*S^tNzrS%FpwL=RE5*7PCAdixKD=40gj z!Ln^H2k!?{{`bHXI{KJ7yiuUp2;5Cp!zHh=O$qb~zq%2El_o?Z>?80SRsTe2Ra@1t z(FoxeF1MOhhPWJ2v7>r7L1V@;ZxT#lwMf1Icn}xRdDXJ6;m+H?z;bKOF2I^|{=*7a z$r+CIl_EBE_%mwp;D}|fJ>N6MNdf;(3bXh8nr$5kxJ4gO`2IZhOZZ!W>7!#f@exkG zoYmdJh{y=9j3L4tLkvnVQaC&x$Io+aKl$YK>k5yz|Ln;pUnpQOg82^5y8|KI-P;Qv zd=TJX+}r!g7_=JBFO>X)eo|eV*Oow5tb?TJjrN<^1i^_fx!6_bKjL1T&W#)NUb?6z z_%42>)^*5gr)oLRJ$K`4ibHhr+;cB=Ucji@3mxxS>+T4+VJ*7b0w5O8ojr$q?1sq5 zq7;q+&SqCcl9e?H+4^eXL2ZrpQBUj+3X8sfadAmNT?WZYLf zo~Hm^M&OJHA?4P~=U!5~?dh{Gz2B-XRU7aReraa1t|vfhugF<581;S-ed^I^fw;Ja z=Se7=5-rmlM)KJvEr3484qe&aqdHpQn#Fm&b~%nO%Tovcq6Ye?D7k*5$RI?Zl!*=i9{E`?lg^pY}w` zP@#Nwo&bso7xf0fSi=NE5Yn(vQP2e~TdR+dd=t3Z`r{{`1f+fswDk4sPvZ2J5lX?& zBTA7UJv;@g+n(PW;@*Am^z(bAcImyh>N`yBU=L^?(oVg|#=FzcFqIxE^l&aTpNB6g zv0dNuo%j*6usgIZTY}%M*|cSdYFXdj{QC6|uKwNLSF#gms z=|~s+2VZLAqnP(?Dod*X?YHJcwx)zTAB6z%JW9s&qY?(Rhw zeE$O2*o%9+2!g6RTqT}X&FT)Zj|u=F`@6(FA)_4_==w=#*}2DYt~&ls;A}X~D<4`i zj7@Itn4IX2b1!^+)p0iA*Od<~@qlmg+^jowj|Ht)au?OFC5E*^9H-vzm*6|!`=R$5 z#)qfg_)~^~SNO*FXAmeH7YNdMS8`V)>bIz;Z>V%m2%85>@0`7K+ZtUyeLHs8{DAC(IaDdTCOpuU{u$uLg;Pt68*J_LGF`jv(%H^m zq}-&>O84|W**R0o&hwv;v)}L39@9RgeM-BI^8q@$`J;-tIlbAi-o5c&aK%PwJ9`sd zZO41ZjeXuLpT0Kw95xqQ1g&A{LuP=wkmso0WX7-Cm?FW4qZSVG#fP?f10Rl+z4`iR zg4-X|DUXJT_>FyXO8+23Dpxj zk)t@;yM>LK5mD6y3h864_279=hQehBVLT6lXT-a{JQyd8NF{9sdz(h=ea?#wpK@VQ zgV+FkS2s?aJ0Z)&ESnhA5}f|1PEHd_W0!Echfh56?Me_-+MF`iT;{Mz8=@_b8q+0{aC_E{~(nIG}IndGviGQ&acM&zT9zc^TEoIaaW`fj_$goi5m=R8G&A6S;>kZG)L0fF~+V#kP z!HzS_1BV#pm+;ikSICu)RW3ecArGzUQ94E*lq#0T|df^0G4YmkmLcpuq`-| zsyXuOH*E6-EH*b-irqI-0>nAij$j{)I*Jap zkCep&c*@;XO84K=*^5knREMAB$&XLcem(cGdSaK;KL^W*{%1%c^G24Ll!PM0h|o0p zKRyB0(+@oG`~wf%J3;$N*e>FQ&p+_>S^Rk-$DiYJtCUXJEZS?6^vTVn9hMP>W?QOYOQzF9^Q{hhY~nhn{nThT+Edo)_4zq*Y__X_k-K<(`P6182M zewpcxNvP@Qtb}cRWYpgl0o+ymv?HY0z9^h)PAbG$?%pZC?8N*5>lw=IiMypy{Z z3!Leg*Rjn?p+9EnjAc-z@P7#ZZ#EVd8gJsmU%d3pGnX!0ASaU7@bJy>MtHoDm+20C zAD$@8eZxW4{g>4DJ~Fz|w*&W0)U5FEth~Xi*&R2N4+1y0SGBi+?#E^QWLAhcNdDVa zr`4C$dFiA-JpNb6B7S4By9htu(81>Os*P}dXFhD;VR|9P-uNrh*FJ&|H|qE|i*;^P z+*&2D9LEYOHMin8#n*%6dU(iua8C!IMG!i@T_+60Z8s}7 zZ)?f7dzHX(trX&aI>NznouJZ_Uq8S|2~(kbVCL7?&4> z^5O!0{sB^BB)@?V*R<2xMa*Y+x)~`X+vOHEVa-mCKXa@(NXt>h$W{Zpjhra3X5cH< zlnb7+=G*_?s{-EpDUs6WpHzJMc*ce|4q{oPiQ}cDNuJ)NHpynT15lPoo2o~8U|p;y z)*K!!M5bLz!(#nHXbe-|qWz~vU7V4}zrr7&0UiJg))@VPNXDzq2=S-a=dRC@6@eG& zHj93Mvb6w@kp=VzLK!GKBkIN*aMef-{7aAn+j2i)+k`bdL4ZYnY0ot*rA_MQ@r-a1 zbJ?JVz}m;8FWwL=ciE-yg1OqBr*c}Tqqk2if#_a3(bm-)biTc6I;}6M({FF6UrrE+ zW{ravvA|X$)UVMBTL4##*P0>-oNm(p4tpCXd9k)UlS0Yu>In^@@8;w2$1j`nB~->+sXL&D>A9!1_f!k-fee=d>P{I*iKi)RDzNy>rKR4RP;o%vhP%{z23hrWc zuk3v#m8zWcqr9f^qtu0J!M)vIly|g~`~TZ4kejy!e>1x?&)~Up6wkdKnH#f8bkIfi|T@d(4v9dKbg zx*_z4=iQuVIJ+F8Oz%?KMWG#DW<1wV2v0`tCmr9)?ldu?WGsYyWAgTwb5ln~jQVC7 z9M5EM)^k%+v;tjvlXO8CyJ?V49=TQxRC8qc@HkXvfh=E~fQ2(nE2B#`yQ?tM>$^pl z()D?B8eLe9E-SGA?kM4z@idYs&kd;89%<)@wwp{Es52uQTQJP#VdN?JtrujkA$+hf z{gGao9*rK&mr}m8n(2U@5DPc&7lBi+Rp?p1K8Va$GT^!+h`ZUWj#tWPKFpxZL!KgZ zvz+=FK3sZNN0j`7ZPOKCINweN<0~;bArQ*ws@Mf@?4!YwKBqhW$1 zM(lpE#iPn*rN#f342*9!!tiJqZaL1ttN54Fys(BvW5!|N~m(anzZr@O|eH$YxL zt>B4owBc4|=grl%ZsMqqHVC#9irb@Gx09g$Zh9Z=tb@CwE)lLr$&;ES#Z^@i{Lc{- z4E4M$0g{t^5Uije!&b^=SSn|w;LYvB&S`4ui&AQA=|#cy<^5#*UbGFSw^oo@Rc#fg zE)0r79KQUZW&b9ng*$$+Y`uR?w(}g_{Ms}brH}3VNePuS#Au|E-dF*wI%Aw8IYPXs zJJ_lTos6!oKLP)D(JR5`O@(0I$Ivl>>r#O`lDcrEtrz9yawrqU*3qsCd=QN9UBj;@a` zVZqQ6C`DB|4No?P_!dgTJYlaa8re0Nn&r=>tvE88E`q;#o9qyt>*h59OyLOcVp0phw(Vb=>*0LW%Rv?3F9KPFC}Mv|MnE(=J!rK$*b5IPwd8k19mH%G>*2TU-?i< zQ^GG9Y`=qYV!Gw=D<;32U+nHXcU_LKD5Rs~g@zto2B5WKpUNW`WgVm)cICw3QRCfs zx0eI7rwYk(s{K{;ebJ-O!1(CnS5r_QuR7hteYlE41sMPX{xkWD2pQwQ)I2Hn|i<;it=p z#S64TOY)xS^oqwUw%$P&TL~fUk>$q8Y}0K-*MD$Lb%;+5xTJ`Mb@1(uss+sO2&9d1 zPJ39+E6V4-m&ifz_77NqHx4j6f3AErWIINML@5HLT%5O^(2iS@b1nC0S#mkfo@LPu zCRb&nVA(yFT6X_xd?{`y`|gzE?16oESDAgcA$3+ZeIx@m56eNU{;~pSF#-8;1=u6y z^nE}3s-E@q6KC!Fu{tMe6EKzTG1R@!kT|<E+J6X-XCRf zeCzSY1Gkf!dJ+n0@C`=>Xi-K^c&@oUFQg*DHh5C8lx*pFX_Co^YrzN{am{_FDP2Od zLz#kkJ7Eds^QiVw>5joc%<)Y;U$`aJ1{itt#d5CrDU^EK5g1_l5~a7z;)RS36IM%Z zPaR+lmQZH*FjnD+On0MhYb~Q@>*_-9$_GSsxy2lshqVH>;TBfhcSdxPgE>aLlnOqP z)hZx|3g>vHlJw|O-1W7)Ba>_oT z1v-xGf@maVm35%Z0Fnq!GzOIF|CK~6qWT|OldTzR(vRC4^tc@21SSEdhj2QWD6^j* z`vkElcRbFW9fxzz;nXS-XI;nAKOh*fZNkI{bgRfCO*Nrx&=&o3R8kmwdt>P^&O49$ zg9FscZn>R*TX%s{F_* zukc;DE>~1HrBfFqcz2yr>-4>SgNW^hPWbMxtJSI}gB>p%L->q4m-6&7bSbG8S|X{iiW3@~C(~@WaO@PRj0j+HQMZPZOi-@iJdxW=+%?m#I{Qx5 zw!)R@HC(Lv9AS){q>Rzu9%sAT8oFzq#MJ*u)72ZkY|EO%Aq0Exq;>}97Ys^a5^}K6 z8rHT;R!h%E9wZjt$b)&h3z+2*`|IVh;k5~9{dyff=}Y8J0-EJgg5}nv36|Jywj$GX z=!_LOekh{fI0UI#fzHRZ+Yh4htyA^oTchL;m(s5obHG_O@0lIXN;?*h0yM&q)+{z; zU!Dvf<_FT1NYH(oTg-8o#ce|v>V@piiZ8oZm_91vR?jBIYs)os!=a$J9j+TLUI_1S z2Q;~C{RD4u{zMXg?5buFdAvKI4Q|(l+S9qXS$ZVwe0tInrC!<+P~l>tOHqC7-EN^WC;mov1Mn zV4pWVt8SQ|n-C(tIBp&OHwH7JDr_E)7`6k_hxkFm6Sl4E z%(3PwVaR;b&e08h{(H2?v?sOi(Y_B)-OXM*>>)6al-VGvy>0_*v|`yH&LeFcbRj7- zkfScbzN#?n_6)2pR5eO)&7Lg2gA0f#U;g)Vu&Q~}1JB2xx+NTJOl&%C6MPzwGiKea z*Q|!gfhd+i39LcevN;X_Vup_Nubj{cE(4|A62|!t6bNYgEDYVI|^Tm+83ICu2UeRDL} z;N?o55{<`bQ7s|V63z}F{ECV2T5PcPhCi1Esc%JnjZGbUcg&Y$aZ&4d zD+f!U&1qegXBxX#m;iSWhh5L#Tf+Bj8S%c6yZ;r0@M<}G<#J3)W~1$V?~GkJI?)ji z3IT#WF~)r}Y|Ks5HQ^^{wyAzZj;Hqh#+#YX*RNl%ce~w5f6(%Q$aePD_LPk6Su#fYNvg?hFp?>FeN%U%#F=R33j>IB&v-9r&bE z1Mjk%+e<2Ii`}l(80tnFJj_{f_GP)6AucL9w{no%E|_uGb#j!zk6scjxN?ngVsUo5 z65uHWzjB&!i||jMB4m!}bAqUsL<2jvO?XsNQ;FDyw zTO&G0yFDEKw%fzf{~THeDduNVDE)9HBtZft_*n^NQ$h=Gl*39ckI;LdOo?ZB=voN4 zY|5E+;dI((9GG(93;Vo`5BK-?>-)%w!*2IxIWJ0XOnYYJ`SB>g(Z?L)p?R{O@g;sT zi#Gu*;KBX<>-$srv!gf^{uSeLN^hT%-La=pD4UwpE)+<`xev-z_((s#k||4TRL@$n zot3CuOhn7^tY(tu_SKx$QPbLT^U~WR>4>SDu;B0)uu`)LbKKd#I*Nf@%?Cu%;@c}_ ztofRPOb%P;#8^{${dW?4UcbEsYNh>vcIO6n^0p z&c*Zv{#vAFNvdZ5!Am&X;?jeRQNga^^SkfH$7_brbFeOJC#Ce-AhHiU_I{7mFC3oe ztF|-;CvC10$D~EDYSNI9ylf_V+rVk!{otciMtWS$Ddml!!vQs-a50>i#br4CvJPD6{J|zwIcP4?7HDS-q zt_d>%(iN};AC%H_iNvBeHObIJsTrnnw4X}RU1jFSa)9sJrW}|Gg6?YFtk%rSWz4)( z!+(o){AW6Xa$e;Q{LiUyzEG?2CD&d0Zzp_!daVZ6*W}ORj;OT^M|XAjag0`NJO>_X zEwH&B&E>%J@X>aNO`bMMnV~y@AN-%U(4LXQB~8M3jky3dBW9;Y%vx2Dm-BX52ho#A zb`y*2Rs3De!(FZNmgBVeeR&g1qA4G8CUP!siT31yc4WCtSZeBx*Gb=Bs2ot;n#SvV zXH6CE=7tK7RSaCu)%_k=De$_=iNnLIxkE%UjXtjns_QFt{II^lsmbT%`>J#`#|Ou? zGk{N4BajVdo?as`aT@)=3gLrl1ac~8zpPyNO~gYX#!bp6@md^_;-zV|+4&m(V{1h$F_9xNwA77u%*Q(iEi1&JpX!@=O6U*dHxoS`v;M?EX{wt zjI1|H;Fx;sA_pIKLOz<(w3z2F&+x;2ce4EcQxm!UDEOH|X8-DBR=*fuos;p!G-5Cz z$kMHy!FEI4bC@mCuSpv8bW1RKnAO2s*8ximy+q803c*64g(dL$}V zspPQO_E!{e01yv6hG>GdvVjh)m4Nyv%i+>3J*o+4)P>WNa5i#~S80OUN&3^}Y^WFL zzcDR?KbzXm%p~yj1IU`=0i^4O%jf{+8(Wm!|I7eEr~_b`dSY$?#B${KUS|#F{ddC2Tndau7lrEde zJE?a$o|}JAd*-mY`Md*~dwwXhpafBTv0sv$f3?gs_*RBq8N%|Ndy|yBLiM$B3n8zo z7Rq#0=|X*}^eEOVNt836gI}D;!5_rSxg7jr857G8Bpf-Jk?$>apF;my?^KwJ7-gJ?3uY#KU8x4dvRJSCfCg) z#I`Nb&^e}y;mgP~!V(r{*NrDK!|S&VoyS$KyB>FJZZP6k8=hf1lrqgdzlt6kCFr(M-vNIF~1Sf}`ay!x6PX^a2OOsu!F%=)lwvFnFPtK0Uhyt>g%6YF^f z&T-2Bsso8kk2fNxX}OG2+cCUG)hDoQwrvEq&i#t3(+(_wiMe&YOes*j2CxwwyW?Io zVFzMv-74BuKG;=d7VjuClT>&pq5>syd#|ms*ZXVD(37vJnBo2#oIv`rry ztC=yDN#yR0Jx?}p%AYjbin;Or?)d7aNs^nzggtZ2Y*mITQ;uyJKL~-awlDG?BGZi zwSEx#qB|m9!p3pJSlu!je2#z+lBsT-Z-Ky8V%11-f(}E|0k~vV;UxrIEA$>gnYlZ8 zB5LPdWVCY}^@&@}WCNEyoaC^BHl;PWxVG!uUa%vz;@Qupw3{!=nCf(B->s>9y$pwZ z;yS_OTG{&i&cVn`F^aXkonUDdu%>XbMLWx7CyhBqQSa@&U9pQ1oqjKg4dY7ueiYrn zf7gQOwf!*Y?884K_kBZ9XWd%2z8?kM{aO$W;YB`g7-;igzpVjZoYHo%CS#I!Qz+WA z!N_rL*L2>HX>9m+&2(;b;RU7y$9Q%)6wWmSF3W5Ka7FzyP?_zKIxCTRNk&_B*Fz0F zp3%-Z(LX-QWcwsq3DZpWPoE-`%&Gr>JQw`p;2Vgfq@pXpTj1mQ>wPsX*GTf$X`94$ zn!s+09P|frVIhORXbKUsqB&Q;DGBvbcPkHq; z0z8XfJ1NI@yZc?OC}%O|xKrAZDknjUhd2vjwzN^nkB>xAPAu66$l0NiLYqp9&LuJ_ z?OS5x_S&56;&egI>MqN8t4w_EgWQRMLojv<(Ne&3*&DpL*~vOdj9$plsj&LY7*7ft&ffH+CnwkmV+(19FhX{S?cx+-2|)Rw=W@ ze~U1EDyYnO&%rT|GVg0@#ydyNYX@bz;hvw8@32DN8UL#211`wynl@0Koyu-}U`+T^ zdh*TVneI~e<=1q*3^3jN%oJZHAAg+#pYd+gW@+ws+$;@+5vj&Dcv>|%mNrPGT0ct$ z!#DI_tr1bJipMjf^?Z^MW;M(R%N%iilmUjvvBWl-vagQku$^bq1b4kwo5*KxV*TLE zd^SBu4uGDX$Zo%s&u1&>I|@6JbD2JRF9Qa7>NFT+?DZNQ+tNdX1eABe)WYk4I8hT#KnfuUQ(y2G0Q@a=Echr_zl zYMmSobAAP$aM%H#{Q>Ps?ZdMut|tw1+q>sz4_QN6B_8RaNu_KOF!kd8K#C*LhW7`3 z)$bNJ_Fzx)6PjP+)PH^1bPZ-Q-C)GEm;DMibir(o!7t0XK&p0)fYD1r|2-|Z(r``R z?@=LKml>02{uZ}flM_6lW7&=&xK12un1-{xzP>%&+CoFkb42sF&I~cH%l(k>-hy_o zJliyD6}r2947DOHZ~_!f1|}fC!DU!N+oB0S_VPUH(ISh+p<+=a#&DP?$0w*q7zN`6 zEE>nKm~gAEki-zgV2-f3S+NXP>{4a|!}(wiBwQIlB+%g<)2-{$us06?( z76+zcU^N=#d_q!_IfkTZy&@Dv*|qUysRR`RKhq6?r%~my2)l&z-?j~1hp#hn0k}Y- z1L+OBf^Ps}IR*6=3Y!DhQ%C5`l5_`_6%Y9Y0?W*X(>gD?_3?=JcE)%QzB}Q)L0+dg-N%{ro9h%j-s&#%F_|q^QVvR_ux}61W@(jd< z1NLw>m99UKdN&q*Y3szfnKqMK@++&$%d4kO-5mtPuf;L^3aWD_;2n5>a-aP{!)ds~ z;le_vJ3rrPxF#jYY7O1c#duAER~@9mB{eUmjGu)OhX>oCz2smAnnw9miQ(M>t5TgzvqWF?mwkWv z_}bRi+RDlqFVBXvZO>r1x(axms|?+`vkJ!FC?2Ku?6T}Tcl#9l@{lXHESxm+LV0c} zhsOscu&4d-bc58a)O`D%l}$en_wNo@R))*Vm2>ARm2;_i=DNc)?p>4cb-_2r%*jRc zkV|C>m<5eELTMmRtH2TrGGjR&?TXP`1yH|6J*qq0_grop_vUQq^PqDAQmsCgd#|wh z{{Xm6=fvPU{Yr%yPGVoTK%wj>&l6hb_Q-p+4{4v6y-PqDwB<%Ia$-)h7hT(+33q|0 zggvDG9@9iUtb@k$I!fzV`2DL0IM->vA9#g*OBkbHhYy8<5Ai`ti_bNP3G`M9DTw^*dSjki!T z^$Ppr!$rHdlt98M66m#p#sy^y8rL)DyvnNQt`_#tyCK|KX1wskcCmb0>Rx|wd$9{-q-++=}Ap6iSTEFMFNr|tS&wZ+6r{mF~5lx z#-s)RyK8I1IcxR!vNSN3mKHZxR`R)Bw8!_fv$FTdEPH%hCwZW{OVZ;*m1=eE{ z5Zo5%eRNYfEGD=_QjG|MG2`cRq7OW)JKG1!Ka~f%VF4I zM=%FpfoudPKsOA7u8zn9Mu%H*VfUfYp^eLzUG2Q~z%9y`Qd=wD8}vt=1oq-Bym}Ug zUmG{Cj3v{EEXzA$h?qDt8N8{a3N!S1VR+6KiW}GM)-|59r!WV0C-ys>srhDed91|! zm`7HW_g^k5d{4R9-SBjHy3`k&$<{%9-gVC>o>+dZ&>!9cj4r3UcDl|gO?q_f&-4s8sYxEmuTt9~?MziFN-jihF!yE?5;z4JiRIC!`4I+^xEP0 zX7h@kPS7fNIzKl~gAQ4BJ^26Dog7O^n8d9)-S6WjEnDNua@Ojt^X?RmRv!5wmUnmj zjU8~#4`keekU=+nRFf7Yv4dk^om~LVeeaa`K{-E8VbhVQnI6o$0cIFCTr|UoFwhK} zpLk~w-4?!QYS8X?3#{5MygG`Jh~daw$i;=xhjT z9cAHJR>7qJeFr=&eF{Jsdb35yQHHGJ=u!Hh2l8nML&lHk|EyOFo>ZkoC`b?8NU07i!@i4T4 zZMy+nEGIL~$T-Wziu*|#xtE$nvh#>cFpI?e!~X?((M4GVTe4DFPIAZ|7(SJ#0zR5? z-l|*odtN0I=V-~@T--I?}OE5^1D}7Y!}#$ z3ocxzVsqe7!8`}#W{FZU0583@xOg5>J3q87>`4ji=UV)Z2Iaz7jttYFqdi%d^5+il z3-8xHtNr4%m`ShSq7&&tsc8xUlYG4J(EGP{Kt8gN3@!+KeoY ztCgk6L{UKv^*}E6c;ZkyzF(F-R%uEzmp*pPi7*U1C<@~?hQo%_YT1X$xmkw_>}2uL zFo}U()qY(2_35iwO74>NJXBczFiVXV2=M>ZrJlTZVWocxS6avVgM*g(q3NOj&Dkq& zV3!J5dhbHA_Cm+CH@Qkt!+R4s>RS)N&8`gS9!6&zk|m1q-~%Msl&EOw798Yq8IuC+ z?;mR80P(&c4dr(m1HKcDWtkX2zW+~&{<#Y*u(R@ z-mY}+r z&h}BYXXsTQ7==XiaSz3#81O9T`A5OOsQc@!*6OKCrB3o6p+8X>4u>sphle9~e=KhQ z;DH&TLkn?H@Gg>Q{njMppFNzo#puRQs6f4ZJZQnD6{ldZW0-~K3pLERGPAMYO@iDL z0h&&yuo}nx@KfQZN*Cho-#RBVu*nh>>k_xHgUbOBsJj{d_%Wu2?A#-;a5uV2nSOtNOgFI;9Nh zw{{Xs9BlOA*;eZ;78Q+b)wNM=494Q7c*+M=#Qi`((vyjF78) z-Vfmhy)5~nSl9x}9yESh*di-hMujbV@Nc-gTim#;P)GS*oGx*Y=58F$qUsgPT4bzi za@(G!K9h!)!Dkv;rwhzCT=6#EwJt~QgnipQHyqiqs%8Q6B#&y(PFd+&h!7M4AyQwT zp}DuV3M;-m5?qP)DfJMp6p|=ApsD|gN;LXPjOE$jaIt_yc(p4dF~)NHbW~k3-Loz% z@09A2;x4^bSj1z6B9o2D;^*H@c@Czg)&=_AfhXBE64{EOjy#CPPBBwnY>*pA&bHfU@4<&7 z8MsjfStoz5ebJQ% z{s>oR=dO=Bz{`GqZ!&&0X>ohDaO0Bubub?1rKdyG(WB(FO8x~A#^{FfUg^V|$z7-1 zFyj|>HgYdHZ<8GiYNt(`CRwJN$G)2!U5bL=N|EF%Sqp)#YUZV&%pJ~o28H@0+pq%P z__7=AZP<}|tV@4?Fb-`2sB-o}T!=`I$Ft*u?q1eEc?x{^;)Mf2Nmo=}mggZq(S>cTrk#+Pt*61i{eJDQXn#xl zhuZ(F{VVN{wEsxlq~n-@2OF{HBGM0!zGC#zKz5c*HW~ukk?-#9#_)c2Eo=j!&O~1|MRi=0i`(sWcf@vNs6Xn; zzZu9s$pZp6m+oYG^ECnRB5?4P$(uO0B@eCqhCFNt%wGp`+D&;*vuX3y2t%G=d^y-| zf?mK6=ZG+MGG`H3U$}?>=fL%I=CRFXxF%X#GVlTcOhS1quZ=-tzsL+1Y(t@whQq%S z>@6}p)EOVEP}87a(uE#W4Vmow5_~C-uw8P*2r+(H=hXHjJmA+8<3|@S?ytfEFPz$s z8CXUYO0dz9X;eMkY%?%6sBMB%EB+7x&`lyCplCw84vz5J$^%TNLVs{+*#~D74~-!o zAuAiMBYW-HPQ_p=t;>u7RQD_{F@BT?{UNTK{2``49L%8F<898YtTKMz9FSRX!mACPFf-Jt*J-GBDnZMk=7wSOM&n*^!ufqc z4M>EIfS2Zb466@%bMuVyzRMK z+|cD;vuaq4nUOn7xP-C|b>Z$#uiJ~TvHc!cw~@fI3uG10Jjg8ADhu0Vox?aL8jHY0 zHw)#J;~^7;4b_|F(-PlFxqPX?-p!^Ha0U- zEL~L{3kTR?EQ+_HIO=0X_ZA5mEcn7o9mJaJ7?xRGl7&a`)Y~rpM>g?Wg;&*PYw@0H^p+p zaj~T?x6EKE^p_j9d}+v+w}4)xQ%hb$E%7-HPZ`1IhUUpwDB6H$w4wHt_Pq8*?G^23 zwO`i$d+j&0-_ibW?f)a7r|Nh}JVpVCQ^E})lR9W2Ad_`_cwD?Er5nnn0cz0!9`=cW z!=iZ22myOMC4HXmbg@=$506K0%FcrE)+TmP21!M+dBtu|eT=WAr39qg8@*#hAPP4K zJn`|{RL4^FobGjFnOu@@AiaCQ;uL?wow~+gOTvIJlo1y1;rp9-DUJ5zn6>mZ>7{M6 zUS##C&a9|m6Q>Sh(ssd7lTYnNWX<~UxaolB0usuE^>98Xs!^!xVN?}3Hj;qvlzb96 z&lzqIP#u)43Cm{L^TKDq4un<%mofIM1{1y*U9(#JbR9LkS*_0N`h2ze+l&hV>RP8k z;2Og3GB>D#U&Xnuo3_ROF=N8aeSSCdEAS=hMIF`Il|+X}bL>OiF+~cDDV!S$QLx(( z(Wey=;3Fi0SRVtf2f)o`u-z!a_CWE|FQe8<>3aoeqVtR>!5BsV=Gf=$B1tc+mbXcM z^Mvf(jCD=-YENn(Oyp@&*P{&hP#N)k6sHXk|J^mw?WyLUdpp?pPUUPt3W#WXAUnaS zK5#}Omf}IRO^jmIM+jtZquoe8aU4Q_o$~gscv`%{BXGX2ZIvVB~_dyil`|Lb^SKz3AJ=!~9 z;hmN=`Kb0;?FY4=)_y_uT*M6tLT^tsbZub&Ko4b|?3#!h7?n-fh@?`AFeJRCz^oV^yyMulh6OfFxPp0Kt5LJTN;m^Nh1P`HnIC38 zCbmFlS1L9bJxhjfGEu2ixGn@`_edUO0(3EB=kbZ{`069w@I$a?Fe&FdHu9cjpH+)< z1MHU8f@$g?+0n8Fd9R!1LJJfr)j6nio2!pVC_m#iyvOwiKwN_j!yMN_gXV}p3&yHo zcS7br!n&ddmE}6- zzcL+O<1`M2KHSp36hzN~P53>+aLhl|^?fjC7ImE5u&tYKRh`Opzh1M&%ckp^gWaI% z_zswiyaKYq`6=Cm>)~=7_pq&Jy89TwKZpHL2e1SE#DN8n2FmRK4S;={d)VpB2>;PA zh$Vpk#1Dx}O%er{5VBVc@jVqoTr!=vngKvj_peu+sviLalvX&&^*A_@(Ch5GpjX}z zx&>0bisOOQbeRLF^s8xbq6q8#?*i6Y^Z0H7cJS(O;9q|3-T^q=$i@Vwf0g2st~Eyf z+9}XsikY0@(pB)E0mV;+A)%J?M0PCgC#|uFJ_0nsMDauXZ3Oue!2Zw~W`ct99M9r` zTeCfrondbwn7)D@I3#EyxB&HsI+SrwXO>f2kE@0bjtK4ORu&6HxSQIxc2Q0Vp9)s5 zh)K3Cak^ZJyL-8H`qyQEeyfO8wk#F7RxY@B{{&X<(R7i1tQ>*AkV6$w-^1m4S=hGt zACk4otqbzm5U?9H2FBRw_VjVv0*8&DfAK|$ z+4svW3w!rrIr$~j4RA8^6Jh>9?crvyJ4j%!;nrTq9Zl&EOpKaQ&$S}I9hLo$$MDMJ zOo|&W8g{0V=t|s*@MjCs%a#B(&sVsqkQf1*2p}sVHtdoW1K}OPbsY5aQra_gFYfQj zF1)y7RWu+04d;ERXqo~l6l1W~19!)bEU$9K4NMClTd2NXT>wZ;tA5j9SE9P-?_jMJ zcWGe1ZU@xm{M&Aokc#aGuFC@J*;*Xep0xrdT@J7>E(rFl?fdq#OlVnO7@>v0AsZ9$ zrqfo^rfL#a?5vi=0`m|C?wdFlgr|`G?VB=al)-ZyuX){I8xoY^RTMX=|Ec|<_7--o zRdXY-yQ)0Qvx{l>zD$+;+n*yAwd-{gRQmm(z|DHyrq){}E!)2ahQ!FH zwX}bUQK@u}>ykQm9Q}7g!x$Rw_kX{8?|^xz=0yG8x;&StbXHCK7SLl$_B~TH2vzf+ zWF+j)IrLl5;X?h2>AKN)nb(QV*=Ih(xK8dTU=mWsZru(|Ad0_W4Bh#TLlb$UY`B&>w=tU$4w}pkCN?__n!3{s^%J5u5yn&ucHwsi6yN>)M^5KncN463Y&eK7Z$i$Pf2i)Uo^7A08ogcLXQUn?0Oyq1G zc~W0m(r9faAmUQWxLP~R^|U*K$<7?e*n>4K)qlETVXDnGD)&YH3w{(tI7eP897Y`n zp9Bq#rGm@`FTpY8Xa7R>+3XnXX(Tf|)YrV4W!1bFh3A;AVE>yWMif~1`4tX=mW#jv6Hd zggoowhb|^BfS!S*>=ikgGYAQAVdt&4fb)v{j9yFDz41F|rZM{0Z<%p6M}$<{+sn!osvTRY7Tp5kPi4v9{WqtP4RYn@C2NhCvQ`?(=5FEwC z5_bds>+%mpZgMcCy!fwgj)vEXfS1N#brT< z#G)r!WD?=kj5O!chI4zcGvT&@E7iy23A6^n#L4T-NQPPByQIa`bwqw@kS5Q_AQ>S4 zDSJJ6GWzoDn~f|U9Dr>V=liSrIE)pW*4~as%@+-JQ#bTS2)Kz{JgO5ZQM$VR)cbT! z>V)%;Kc(x*eplbsp8jov5V?G?yK|mQd~^L#+NF<{fB#Yw9zI-oFTCB<=sSP@&YzP_ zvZ-Cx9)^2us2me$ejIri$rn;>!);rbe~~Zt&dWJ55w=+D$`@TVF>r4~!q*dNpQX+Nv|O&KSabv5X-DBNlC4AZ+v0;CKEdLl(EnmpSep2}Te zp$=L)iYhdDhCwF02x*2v+O8raO`gdC9&uX+aR>1CBJLUOQ1*z82O|C|^?gc-uxuT6 zo2?V7%ai>TYA{AAn6#F_Hw2}O8MK0*37rz%t{P0YEkWpa{0-Nh*lnCTzDVif@l%c6 zvjhkc1b+V{C9VJbH$U(je&lk6Mn{j$9gS$^@|_^FD@TqVsa(2GZYi2u>%ThUb-4_Z z**%&(YbA>)S-?m+zeSU0=Mol>ix{Qb;2ce!VZtEY5_B)!6B{&nhUo>^AGwN(|N6gx zWvw?)%+H_LK0ZHx{J)5WyxBaleWE#k93axzJAd}hpOI7Kl;(nm@wE02(Z}$T>OVYN zq(seHcktbjUYlfW_m}SZ(w$zqzvXVeQC+B37uN9MOmnRXKlk&cB~EltaDT})fexkt z?q>kMm~OgDJ{O)&4slH%Y*!s<>jwf}a$RS{a7{xP@MF3LVY<%Y3q;@pop0gV|2+X0 z9&WE9z|9|hSMW_fef1R;6 zsG+lyC-?X3Kk*awlPBw6f`5tbK0!`uyVx(Jo(|nkEgcalAH6gPxj`|_I1n3>QLMs6OtgE-T zPKI{v+#_|kzGuy!RPbtl0`R(W3UhH^oue%}3)~x7TIQ2;$F`3z=;6_(8pe&clTYS) z5otEo*72hCwZ^b{yh-ErtrJVMn@r_qn*er~&L7L=uIII7oJ2NBKdey)I#Hw(0ILqI zZGdr?%wIE&2LjXYY;LqG_Ugu|`U5{0u7w2dzZQmTM93l>X{uj-pnhs&)vmNRHaor< zJU9&Dnufe^1P89;Q`*&03_NQ&nX2tHEByIUut1iX?UEi%#+;azU zNVw7oYWN4#U0ajTR9XvFQmNE8=IwmHXY6IIB}23Jl9KGOfv#6P807;kE37uX+H(I~ zf4Sy0t6@#eXtJy*UR^x0*xG5q4?J0oqZd|jFw<&r7ED*$#CaNWBAOf$m1s>d`^KYr zQU9hgSC69lTqTeS<(WxM6Vw zYq+$xfLH2R^)?u78@2X$WZ6)otwQOV%6@)>EjjcGR0X~jVqpt*Nb0Gomc3|LUp=}O z>A`XX*Qc||Si@mDX29&Zi*q*S%XH>63}*7!tJ!8{;hu$xY1h1%88;hi4O(029f|2j zrB|vS|0=`DZ4|!%1gQyPSk8Gfbb>v@!60@(WLx02nhqGwEUl+Z@G`YU=^dnlImCAb z#T$y|AN&q5CCy|C*>?luG)8q&ThWebJK7oTVlrssJmdC3i~{dr?yp@IK% z=9qQUAvQiTZpoMt2UK(}qeri}!E3Jt?kle)Jq8fwqw@4P&i5E56VprJ9u4_Pz3y`O zg=~@0-xY-!H3d9m;Cd338`rwmYR_C@#>-E0R=}rYIcJZaatP7@G_I613IuDG6HR0O2z9xK& zI@Jo-mxW-JphATS2I<<9hJjao#rTEm23$*Z+ZC(2Q3+gP1!DOT<_DG&c=}^{&02e( z5pcNdD@IU+?S7>-u_i5!_HHKzvb-)?K91x-LF9LwMkq@q_O@f-{WAos8r7bNLeYo@ zD%gp|-1D0)&YPaeC~#+BGG=+UP0i&X^kFODAq}Te>(weY@GmFSkAjvBx}&u*fAkVL zarDyq>gi)PVR8(b#XXMAuwi3@FC=uY){Co#3C0r^-xOGef;za zz>teMx_Gj*Xct7XQVa|!94e`b#$tRKHu~pu+~6n(j5fB{LyJ2CNub2F{G~K_u5A6M zSkqhZ2^X+M1#=u`5{$Q+-ddBz-m<}U#;MLj&TFQs)n(i@{0g^pP?dWR4mWkgJFO3Y zB&gdyY;jXpmLVQRF?|ncv9iAGnKqus0EeStI~D~sC@dEPJcdCz3-5X8Onvc=hx74j zM|KI=)4qr~k#p!-NM`~Qm65E`QZBxL#ZR)E1}dUFy#~_VK)&osIsjSZdJp8bwTvoGRpqE z$7@E&eNGH&n@c*iD6^=^8v>{RNb}~JW0AQq^c7-{*Wl#poAh31LK^$N5;9Y5h?m$w}oz7RlE&ksUk`UBbO`0OeP2h zq^eBFMhR67k>kD(ae`g3EM~(KR$Hpy`M~WS!9Iz)rNg%Is0DCZpzVkc!pgLHLkI7s zZcsr?Q{*{sg<(k|p%%EXWbT(%JI2W)z8f$WQGJ~Y!Pj*f!G7kz(gEQHts6B?xXpm@ zg*d;9(eDD*lINtais>{g5CZg7DJROFWE+AAYKScZekaC}+Hy(>BO~ppIkM7(COIO! z1nc9tx~$j%K zJIyGv=^Boq19t++u$lUqlr`_o`Rd*Hje z&|7;Q&+81%?t)jB#*tmErZvG!I0CzKL!L;wL%UmcCwo%+fc6pXc}?3Lg;->#1CX`- z_MRNC3o^KEh=HN>+)ht4V)+bo9a3ml+M4ZXfDg+=UTpM2S*O*gwtS=Gy=<02*I%K!PBqNrI#XBt>$DB0v%p ze;%zU+Jv+u&6ZYL8MGKHVPYj)l0&v^jKrlZIAZCI!LGbv(HjoiLp$VMa@QYm>=5Yy zxc9!7zpAeO3}zt5F3^*enU$6AzWaXn-goc0OJQ}>GRC$3qHZ|uR5z+r!!ynlJlyVU z|akwZ+9+O*>t$Xp4(lrGAgW z#hBybo|};65LnECf;e{W2Qc>>-e*H59r6QkukCe zlAXiz$w@74pJEZ~unD=}>7l6teG`d=R<`c(UJ0W|*s_QnjWIu%z>SZV(c^I$XVxBR(kLu- zCpb5b)>q53_JlXS=$ppkoq_GikN%G9PH&WpB1Wt1&slbJeSECx>XCDYl;B{Y-ky059I7yLR3vWsJ#F#;!-HZ^5Y(YCgDaL$f!9X=x7!VLvWJeY?Y zD!#9tt+(s&x8&ooe!<7PJ|1&6gL#l1j>3@Y78^mMpY5-T9QCk9bHt#~}*{&mI=X>!1%M`dS>aj^9g+ z9m?`sC@&o3I9^9}pE_~_?@*y9$-#B}bGUzDpqO`3lFADJuP#8Z}lBLaW7P~$uWf*DOIe@BYXm|h8 z_V$bC&!4|Kk~%*n1DN(BqMhG@r$>^x5r1y;{Fj2xnsg)P)hX#=p2L2KmVSHS`V<-Z zp6&m9Z}@$_#kdv`s>J>f?;>_Ha@&$)ikJs~#(TpOU09pPE$**DO5aDzM1;T*o{Z*865 zjL*3nUD4jLibd<|nsR1qn}4%~NeB3|XK?r4NNvvfKKv0Lg*lun^=5iPA+ zul*(V{F@vcBIdT8_JE_iX&U1*FUi(g%V2KLz9GQ_u#N zrLRigkp2#|#DQZe+-GbJyUl4~zngzPH`d@^I@Siq-3c=6u{PA2ha88yM&zDcjK}5< zADZz9OG=Cy^>Ikne?b%2^?Uq2m)|p2-+GcbS=k)8NfMlc@9lmT zz8ZKq#YD(>v&mB$$1gDlZ^w^+J-eHLI1E0UyPNgXn)C|SM`|$h%=6t^^niLhkF+oI z9O&suboe`0>=bQM=X_h^ z4mwO@7>J&3@|++Mcj{SPB5SZ>yoCFErMYr7EK^zmtqv5}3jI}3@y2EOf2>VW^;N17 zYOBnw%2ip12jF|f{tZwN>+tNad6bv?;~$ebs4wDw#JC!aE6%wvCK1U58Z~P!%IpPy z%#X|h(PV8*vDqh>Lu*XN&@oFfT!&J}DSW5v_`dUAg%+(lY~zT=bZyagx?WW^HKOa3 zq;-zV_Ji&kMsVN;3J(Iz4BK*>`zP^0-4{rq;6e$mp;#DCB(oZI*t5Drqa{`GLVX;F zBUYDC9h5jzt$JO@Uet75UwFs}9GQ(j=U^gdn%4WI^b_du;AcM8eE|iVUQD9FS$N;a zJ0Q64fmCr5Gf%@Eb50l?Mo$#<)3(cya7fsFcuO2-g1 zTJcp~<9s@(LmrY(3Ut*wVEt8!`2Ei%tlFm|xA_=)l@v*b=am;8lYHAN!fnnr29{&U z25w7m|BX4sf#JJ}Oo$&G$|DN@3JD7^SY<^fnlV;pwkCrhKq-+Gg=(_t+nb(c8pP1d zg6+CySb~SOv4RIr7|bixs)RDRP%JX4uo5uGusOJA(NYjY1>fsgTee5FvR>4R@!VO4 z`FaDb+OxDFhF=1!hZtc=EN{Kq$Ofpn%V5&r2n(+b7%n5a<1W1;x|U)06j zVSMKjnyL^0Qb4W0*pJV0{S{!%uNOihLj_qWG(FR71T6gTcvh1f29%7$5isuIP}G~6`QpbKe?5j^pnNnn5; zsL-lg7U;|hrt71MRWwvZ2ev5+E9we$i|C;#li4|D$fQJNd`gwkV#kPHG0VC?t!fyQ zy)dup1aSe0rh?d_$?y^xdaVmZGR2JN*)o~sRxRNriMz)M8+vhT zAWjfx->yzVHS^$3LM%u0l422hiHts~MVBgik*UR@0~O~*_X9~Z~nIF7c@Bc%t>@AxE}$!NHuiZ zZG@0$gJ7~%us&y&F=<}e{G3$~(cAnOuLTp_H)=+@J6;Qrs$@#vMHC2M@sa?O2Q*@0 zKI(Vl`#|MZa4(QKipFK2ZW3lH;uU_o;6X>AlNgc1=>k+W)>P0?v`y$E1Hp|slLe{o2}29v!`I$0dl&kYA%&A>x7~lo1<_?Ic6%_ zlBudo3V-0PV@Z4^w=-9y23qBNL((VD$$+5}=}8A4h&p_QfoUWaLzg(@n|f3L3!E~o z>!#UM3i?;{f^rGbwtN(WV~E7~CiCtMPL+V+I&nrD~nBH`y3h-dSVvOg6RHw0`Phjewr^`eb|Wf)GzKQ}nx z8zQVs98+9A#`U|zI-ht)b`ouDK#~tYUyI#Wao*M1z1V$qb*&) z2#pni2DKhD{zAT1rL49WILPPqSo*)1fkIvrbuh)-RBV$yYMuJZSzk+jtYv#BET`3O zRII2Z6)jR#_5cL+0i-~jNAbcZ2A)=l-*t%^&WIUwQk^Jyu@Wxcb!?X3B z!S?+*!JmSt@zp(e)XtjvuW_3vzrKs}Cu?spM=VQsNOvXi=wW8_+SQVsVJ&&|2>tHv zwq4od{^cCu>-m-x^%^ly2ih0yd`E!(Gt#5d6X*-n5>Sh~ku;M!?J~6Vlg5kFh3~@N z-1Uo*D4Q<|^4g-YUperJOL61ip_F67lHiLXKK}chd#j&uWGP1Gi~(QbxeMle?C%|^ zi|cGZo!kZ8=<<~C1r-hKwIDnN9VRA!oRHYi{1gm!;TwEW&=%trU{U+G9ff|EDjiw- zinf|fP22HOV8oEK1)P!Uw)q&Y3y+!hQ)dY|t6mhB(qvs|A}oiP?iN{E%DNlsQG5x z$NSw#lpJq3v*8F@q&U^b6-}}{Ug*+OL(iK8uW-&Ojtvz)j7c%+?N-j3YYvk zrn9hA#k2W0K0E`YiTEh#n_M^VY7<1bC_5yAF2KDchd*N&o9@78|1)n^3S-5x@0W{X z1?A06s;e}xra9J(#jhqO5eBPiaTJ(|iyl$CV1WzG6P3|}`i7+?KAUnqN zE`Y8TaXoQD<`6@1Fi59;QVw_ABeTBpn_?n7y1kk|c%hEKZI&Hu``bo%af>(@>NQ zdc~0=9;M!qBMqO(K*aQ4yfQUauU8`9E0=SihJiHIrzV?%jvpaT zGK|_1AF#{|gz02$HpLX}t2)z2>tm4nkG&+Hz1f9mr?Bf*fzW;8R z*j6#u{11VyF3{DG=6E~-a)xO^Icg$7f-#&RP#6T)x;(8bG)+HGVmt?(LiKfpBi|)B z9yF-Emb zymkC998WEm-C{XxPmMR^vZ9pb#`sh_EEipDhOf=c%ruu47k?|OC8jW%eGspoz8lwr z!G2K{2uZxw!kIrhR3G7$0*%&o#wHgJ*Co*z}}^{J^tcOF42sFolvOu*=15lcwq z5vgz~ObbBcZ_LzN_2ub_B9!dZTb;#by*|A(IqnvyH`(ft#=_S6_EckHqF$|Z#vHjY zyS4t-Mq^@p>{z>MtCA9r!(|vRb4I-DLm6fP0lg2D*8pZKq8UBNhIbA6`9{lH&m7jFS!`gTQ{u{4_ z?Jtp$uYBf?`)cnW@!o%R{+aIJyT|r=H{1K|cJ028jefuL%z0iy9$y*fee_=xreU%5 zBc$HW3yKM^htYp2IUz?Wy-POKudS9Y4mM5ah{D`3U`9&aV=lCkT>|MYWr5zQO@ z^6cHJG|u1M>762bzy0FHk?+6jb9e1gKu$MUfZ6zj^q_QJ`jGT#>3Qi_V|_NZI0+Fy zwTyHVnHS-YdVK#6TZW+;$2u@%qaN!HDhkn{xU#m(LtyCn;qQlke+i{oE|>_-p1Y5% zqf}cjnI-%aAMe4q9C_%Fo&Sl6w#f9RI9Jk}WFCYfOW(5e%ep0EiuvglXdxiD2c~CQ zo)rXefYV@$zk~2Mw=gP(^22Oe;@fi%%*NkRxsuU?&5`9DDRONSwY7Ikm!z*szbO3= z(iQ2qq~AfwVwmI6pu5s8AB<>7x7)3q?&E`$_esfNo?*(9M6_JvS)h3)=x$GVn+14| z*;>%i=7oWF`C!U$C&&2o=66Q4nv-3ubGO#G0|-}AbckxVH%b?M;oh{h)mp!{er;qE z$%Kw*fw*0^vSLQI;lJmSa?&Z1?r>v${rYuI&b88|%lKa!(_E9*rH4|Fzu5Ua*^-(d zDRgKG8QPD>bPQ&PW-$I-gyTK=z8$Mnel1kszp&<~sXlVI)Wx8vTQb$DZ0W^-BlqZ9 zsd^Oc_zrGl9Icjw)-`z3S5@Di(iPWmczBNCD*6=e=w@-$HK`Bl^@GwoP!rpO_WkSJ z?10?Yh3>}qmw^y6PQ}5#lj1!~!&Mqt@hj|EwuMzx6je8Er{vhC4k|xZ-yc!C5miP$ z-0okYbvx(a8=aJ%+%2y(0GjtjCOHqr`7HEG0{4KS(p6L#@- zO}>9!?OGqvtb5c^EA4L9(m<_h=sN)x5hM02uOoE!r>MMwuw z>m$yB|ETJzpGG)@Pk$Og8Rq#Sw*GkKXhkkOWf$WgHYZBk$?t>(8s7A>s`B4_n*VeT?GH+ONj5N!>kA%l(=q8ffM9<5;gJX(T#}PmJ``74;P@_3sjd@Ab&hwgWKN~~U zy@w-te0AR{?P{Y_udj_dIcwwLn}-7|ZeXvwiH6w{cJqPuK%c$4hBK(;4WNf_sPBy; z?=uIq&o1g--oH`un1OTL*DMj^645Ttblx7xch70GjU+ulHCp8)EyDtH5thC!s?|5~ zD{d6ItkA09;)*O^qCBfvYLmutTYNu#;N1vVF^U4#>+@ar`0`id0?#QbEESKXguHO! z!WrS38>K}mTU&$FeDj&7pMC~N)s*{(=lB`ueTcZ7hL^$&7iDn#Jv8`_b6Z%M-TeGs zp}Ne$`4M*2rc9$B*uSG*<_*e!{b5-i=M&*7_d8zYjrcDPnBs@#i-&J=zBmLEZerTl zUHgM34)1{KXL;X}x#P5S-=Sv@b=Mk}pn*oop5+1a2w?+@S8ns@pvmO;z`7-nloWMK zpp6amNo=>f5##Z}K*49ne}SV9e;2xKy-Xgk~7c z?28Yh_x;0hO!FcyZ$)}e`kB3WDSCaI@6SXW^imT&1#d>3+k@`M!ng&x!%e`e@W)0; zV^lRP%TVR_*~Lq5w~8}FHcbKtm8zyf2}NxK^cTc|fD3+GCd9;pC7zKnU%966gDi_@ zEXOWlOtQ7B1v%S_Dh$bzA-ldqO%oV*@o{36Uspk77r_tkXy~Yz__2!in3X;%{q)Vv zNim9hf{Pj^xQHZyLe&ybM3O+Gv=c-`k^r8r^&=4)u@W9Qf&G)$Q{55mb5t;Z95j3? zw};`{S{#9%<9K*X=7gVzzV2 zM$#VfY;yWp>=e&#r*rcH=jRcS7w$b^4&#%_xPS`pC&toT5EHr(COYuwY3}WnaoI30 z*u_`8kozrcp|Tsgn8bLml}4V4)RNf(cB`T5XOVKg8 z>%`Gp@k*1eI&1BN#@KJiHQLfmvY}fb9)yz!gHCo&RYRlY9a%8r2GmNdHt5bF&h!}j zpJPmm{yz_Ez)ffvZAXs!EIcV=+EN*TYt{}B3jU?js8Hjf(}n3sd8gf+t{P@_x>3{h zgJgohpp}NxJ#8w{^mM^6s?+dWI5tF|i|e3Dme4d>BS^amC4(q?(b+zrwcfuMoxgRE z#xYXX9<-+n40aqKaqGPCvUVo#d^paD1+u1!q9!V ztL|CdOdfAyHlf{Cz!B?hDkk*4vCj&-z0KFy0VCeI2yQsb`yn8B|f<>%+ZigyYes<8O9sk8)k7s%am<6Z#&zsHzW8 z%W>5AGF6=xoSnwOKn3ko3`Cux+%fj&ed&jJJy1+5XfSj=6HX!S?tii6`qCJZ)L3u8U(g;i)dIf<+=}mYYUaCKMBEKC?2vhh zzJP7xF!-q!%9s$2&KpnIu9Z8Kp*A-Udy09MjD)P zz&!MY!$2MMU0Fu=pS6Cl#sj#PL52JpAtVdDeX7~A?7%BE12X9e!g)bahK z|3F_7aRKi2#Q*Mw>j62HmPz00!bc0nn`9{p0=V+QxbB7*$oeGejXxbBZHhaOdifoC$ydFg)J3PLoN*e_y=mW*cO5 zjmzS3P5gMU{^yH9P+X2%ZGTSK$8fv)7>@14UR@)R6hfQ!q<3ScKA#2YdJ!WHOygt) zV>Mji=pA?iZg(eg3N~BK!2hGQNQ55XFi#b44D=Kr|NVhqzP(tja}bAmwI~<#%6Oy~ zWGdJ0s3Rci*zqx0j#`QaV_B;Zf-B(}%Ok!|Jd1Dc$TG~xit8#cUBAE|^i;x55XE+F zU5A5mQrBe_WY$Mybc;c_W0}wg2na989FSm4Re{ym!9W5B{a{t!9~<*2Q4w$z&c<`k zrZ!_3so#|%%%;&7J%=0fct#Brpnx0wysdj(Q$BkH#i(^miwpwPkAcj?A;Oz@mIo=Dx0dfh5`a z;N+w?J25eP=R~13GiDfLGp)iz?z|+v_P#mOawp~{T1|)Fhi{!GKj%+6%QN_`o5^H| zi#m>&nS)^At%lA7nDZ9VOXSiQ?&H)gg#wP!(__*@FMukDHiNt$GF< ziq#Ty7A0496?lOD$oafMY=9IV9}G>=MJHX&6 zxn&pr{sA*&=&o;_B1G4qQ#dce$PHXq8q5he#StfmWsF_*PIg$bc+cM$t}78OAaWLR z@R7eZP{9wS06AG3U`*CAX#>6W2OJ!CMOL};9t|-v!0MfQv_l>$#m|6QetM6F5bbb9 z`o83$zwh3?VHYpr^7d%qg#VtjDZQ0rUSR$~j7AWSVHi!5<~j+ZFuuzp7eqG3{#rkY zAMJ6x>UQQL8l(=Yte1JO#$hnsZB;4zx?T!!R&X6v;h7iV;JA1altz75@Dz0$p)}bR z3PIleTPW4J4{UL^GpbptYGFnpS$PC%`Uq%ta5Z#O0i~{I>GyNh30~vF$NgMPg*WHq zO_U2(MV9u%RA^v!yt)^WmqaAtwY|#U0{x9EaX3$AIV-Btogkw;DxK$XM@o4@Svje! zE-DyX7EMruQ*bC>$7lyM^pi?A1=M8&>QbD76`O2l_UJ@p%d#C!96gtv&K3%@z8AQN z(@%6a@XBv4=Psuw&Ld8hX+9pz1i{QK#!dx=N&)_Y@o_Rg{5o+uCSK*A8+`Ly_@!Jm zaYULyd1iK|95iQ}!C0YEs}#m($8&Q;m3v3uRL0-_0HPqO1N-Cvh6eZ=w{;(o4tR${ z>4CJp?S?5vYK+NrN_q?EtDnlnrDlG;nX}3O<=p|Q6Po~wArRuxhhSXYXz(5%fl=%) zkiT~!NtYz>ggNHgbBSi-oBCC(%T?X1cp@i0!1lSiE^_|jYcC6bziaX2>X+h) z%woRphTCTHV~nO;=ebf1;WL95AbA*RP@|gi4sBA8fCT#qj?fmnKP1V#V*Ab;%{Gu) zLbTOHCnAwP2IWmVVL7f5wxcJV3oOq zK5N~ezXl^O<D_qr+mSq^;=}o&gGB#l=>e{81*Y}7@r0wDww(6Xg>Wfvb-Vd zw9d!cGS$C)i>&(lTul?ZQsD}{c*~s9a(qG@i+6w?ewlk7rxBi%2^a90Ske$@TRz%~96jq8jJTIJo+z$LHM*p<_e(?=|30-n1T77qq`j+Zgq(NnWpQu zt~ZNKnHaO2g|_|3?H7!Y_n+dMq5O`EGjjtZK z$M&f9F7_k{foUk}w6?wD^1a<1&Ws&yNJ3`d-mSQ>{P52GIAf-#SUF_POJ3mdooq{g z3EzPR-M3$fWI3=tQ z(039YR|cKD6P_)}q5BI{njxQ5l#{ZdO;OVIj}S_h7+ZpmBYu~p?Z~7X>D)UgO&xO1 zZDW`c^cNnsl%j5pINKDn*YV_oPigUoG(b;5s>N2~cD~fk;Rw1!w1gt<{zH+(Qym;Y z)2;GoKQeBXN6mO|WoZCOGqH&t8jV7H&z+jC;o+hH%EEne@qvdc>CHUYeJe)JT94DH zaI}COJ|FR!DU(a{v_72Re`h;Ey#tULhVk-;vv<78VF{AK%ByiXBYrD8-N{b(*e6OV z6dx|92VN=k`M~|vru5GxAM>c;z9Paobur5z{@-*+C)r5bthQKfY2Ny)^}6r-CEu^= zQ*E(>c5dp}tWys87w}&(SQ5KQsc*-h!Fs}@r!Z$EyniiG@0a2pWOr_dh3k^9l95)b@LF$+t}lUu=*79D9DpuKrixLWeZ#J^YUDQ9xn<-r%kvr-I z>2FKllwOhkrS$Km9}{;!|0uDH3?q9C<5ieH&^jR{O3~{z6b{( zxxnE_P-yYa<0yN3T4pm>P;x@)0XJJ2(Ruii^ra7F->d0Odce&`M%08qO2H*WhLP(J`B&l`49yb&E%pic{;b*!NBpQ4{uQQnTtkY}W zU)t3h;cPo=-FDoy;NWL>&y!qR<@!P^>wwp? z*R_Wp*zfLoT3!yIr&m<5#vb-ecy6o;l>#$EQ?PAMbXEND! z^GyE1q`Y`dmcC1Bu!2oVGtv=hK3-jZ@HxvJ0nWFEw*t&{pz$2$y;b}=e5b5!Yjj-(LgwZ{DxaSNdgOD8QnnNdbD?Th zHY=tI(;`)@GA7NAoRX;*#_k;}=w``@K+|b!+GRy2gb|_2!wJ!q_rNz)lkp`)p}I~L zOq?TYlz_;sFtcFk8rELZt%AuEqQ<_yXeqOV<#y!IJF}&9kp9k$IkbjoeCbPy=I37MB{#iV7zTSfRXawYgz#m7|J~m3(d8w<2+{v*nUy>q@+t?P& z%ol>&Ypm0cewn|x-%pCbvoC-0lb=jV86VGH&(H5WbNY1V(=E!FM8xYoONp?Yun$)w zOWW#x@{`?7MN#%Eb)$CXOsy%)J}*5PXGxyKUD{-CNUDj3@|CqyJ5u5o=v~X&ldw!B zEM;*3>#>1G~Ys%h;{kB(89Big%cb``cIW-B$%?_b5TS#WG%a8q0X@0>1CU zo@FGt=`p_@dNv=EPD}S=9Ckl%#><~4NO6eR&2nG#hnZa5#bln`{QThILUv)MH($sa zgQs$38=PTRZU|vzU3_fDTNraz)akjj31FaV7P|r6+lQu$o!(am8|-@4%08N|nYI3sZe4@H{!*@A z?y66&ZGt@;YS@y1^=okKPp-gV3P-H!`u_F#WI6-Ev;!Q63bD2i?Ub*OHdG&M)?M|< z`%zb=af~w>nGYCgF8al0F|!*CB>q*E&266F8%_pO{ocTwZkVOuwI9X4u^DDA=9iA3 z%sHNk_+g$)I?3gXX`s=P-Hb-%cOJe6&-L+MK2I(@x1GW#5L3Uh9jjC@V%s=Xiww^% zaq&XP7}cE}pU>Br?ioH>+uJ3JCBM7gYUKeV+HIdFh!$^3d}l=8@THp6;JHGEA`=|K zI%|ElNILy6>a%vI&mlc9t}z-Br0{FzOcd0tPee0j&#L_r{0pL)pRZXxxW5`T8jFoa z77g%}cH#gO4sYq*S)CNLLDY1V&qdWl|y+LE6=;#QfA&mWRD_@ssO3Jrh2=3UJbDh7jo1_&C0KSgi zj#pjx>vBxhLoWo5JGZfMAy3_Z!r++e==l?`bx0@T2qRjl7GNehD80*rd-)+s@WEi9|)ZzS(TJL&P-11Ai?4Wm5UG9ie7XSr%*b!G*hrk4k!7J zlOPFmBCpf`!}X$B7nzOmDrr4*yp)S|lX>&enL^RFXO0~!6~YZ~@m;6DpJGQ<|#mP)*BD z$sA~#AGXvNWKcxo6Jbk;-#5MI8yUaV=U02Y{jc;?O|E{BA4iq+g08;hqwp`S!+(Y{ zqZCPYxYYjBDt!RB*Ep-G^fHHOoIVNfCM~My%6l#KMJg-sZl=cekobKwd%p41KrQxo z{i)eg2qF0R8C4~X-DQ3COS*dRCAgR3&&|U;xFj71sRlDLiu9Z!Eh8o#Sc9%3;|>IC zVs<+|p-0OrKpxKCV&M@Ns3ndQ=y=H;kQBrUD&hp#^5Ac|cA1{wggWKc!b<3K0|T|2 z8!&IWb!x#CA+uC=h)gY6K0(MN=!YhSqfAc7WR^#P;}Zl_8-5`3jrB%n#tVwBqbssj zFicsUULA+K|LrO~vI#}Nd;4%E%bRecbCggx?HrXiiR_3XU4UThR zjElk3Qo1;OB(9h3KB~!4pF=(fSNkyFxEbv6YO%58H4R-U+VEaS)!4K(8CotC_gvG_ z(p&u5->DWC8{V{88w)i{p$^CfO)H$VTzkpDdk%HVKKuf1Id-9j52tfQO?p|X^XTAY z-~6Q9X-+pokrb5MD%SebjvRH{t631H#yARa^W*cF8FAgIc#7&$Sv5=MI!{V9uHDIR zmg8F?+%fpWFE^GNg>bB3l#6BvmCy$+;7cjPpjrTV#s_((&*d4kwV>4z;nsV75VHDc zc@R@~ZxyDiZfu=w^T4U)UNdAt!61@RC>TG6_(l*A}2D zBfU`2UwaLY^)GzkmkVXbDHneE0R|GA=id9!#H6m8zJB@?l9u?_vUsl-v1*?<^nPzA zby!A^(Ei#=wD*m~rFmObuHa0&#~~D3btaXe1E5ds9@mJ8f!A@0u7?LcCUBQdmQ7q@ zX-FR$eaVqTLMnL!GPFRad=R*BLHd~VdFkh+Uy)vveoy)%>6KI#6}2B=68p>iCh-uv z<+o+7U0bSh6;H47)7;%F9F2YW?kjlu%JAJCe0Jw>cSn~NXS>*=G}2V^>EWga@GcuS z^Bs3IJH!vMYyAJKe~8)e(ETH6{u^0?+{l`A@NUwigLji)?Zez1UD|eRP(8S~|0*3M z#zjp1WrqB-_q;f#DKBAt;n2!z)6VXWoZGTFo5bbaC%sF0`p|PW6A5t98SSKS=nW9B zK@%Qq+ydTdE(^uaCClBQ+3Snv`_0}m>-D<_%-|l2tS*s;lGh}{3TscDWyzjrbY-;nQmw@yh?eT8M?_7+tf?g9`r~@7xvWQb?iRr zC#7FF{5rN4XIjMMM7UW6>lI?af<%Mhu<%7cx-E|!z`9kU6G{|Qk*NWnM1z$I{xpI) z$U&$z6*#*ckBsE{ILMg_LzoRq0Wp$NMYjgcpgYiN(H_RfT{cGOslkYswQ(?sWCNvk#%g0k3*5+Z3Y(=;?su;unwQEC zhHnUNoe+k{t@tDU8V>$a{^_i5Lj6VGT!Q+aIsAA{+^eEpCkOPVb;g79^?{F(E$;{% zgROxNF|PsD-yb=z?M?AgHkpk&Y;o%*6rKM_?Lg8Eo-2J~M5gq?#!a)Jb1yzPV2*PP zlfSry!ueM0rT~X@za@S5;(>1;b|~Cc+UHU$-Ja$8vC{+`Vjblu^ny+3`J#00^&4@- zFp)G)TjI&GI;=MxLsbVj2Wx4LJly@}u~|rWr?-Nj$_{~b*z{|TWgA7Rfg(&CztONk zd7|=?N=)^rV>cSULx`$svZ6pyJi%s%)sHwjH+RyAQ!9oHq5Bqj%K0>F8c(*!5!x_sD`Hx{ zfZ!A(cmg9;XVXE65Lkdy5CT+=*La8AwNE)oj&YgKVw9bCnRvt@5zD=! zp9O)Vg|p9wu76kH#XpAnSOx8r??WxCf&rifWDiP9%D3<^&3$7OOQuzPWJ&z6NofHV zr;7NP!mMCAeO6rkD18A>6kEZcVG&go3(5n*Oyk(sUB zyvHtFZbZuJHqQa1&|gp#kknww_pIxU=+dRA;ltCHa3A6locPwbhd0la_>xHHxsxR( zi_YvL-2Z)2Ix4aaM>%iMesfxk^SjY7^ z-*ZWi1>`6Um-DjxaboM@efM3IGCUi`{U?^CleibMr#EVxA(6!zSsiyEDXAyq&c zy113qOaAd|JmfE>lXFvZlhvStkaU%xdR7_tf~lfi4?RO{U>$*xT!_*A9`YLW@ zU&F(i$30-`QOc}uTB}vNi?O^7X6_{1;;n|Y%X#ed_loXhF04CWQbIU*9 z9Dxy>BNZrJ?sj4#`&)WUS5rYkE78J{*+!D8aOz0wsQJk8D}0N(#3oEVBVL(eT_kst z(~dbYtWqv6s9H1(`iM5wc?i>gf>5^6$0}LrdV!gkH$cySP6Z~5z`b@(S{2@SPnP0SV9gpi#X=|#Og@Ly*0NHFJ)#&*eF{t~-9)RSlnns_4Z z?JMHhZ3K60+g>(@`#FEdW`ewY({*0pcwckecjp1<$-AT5+VKvl zHr=_E`qq)&9XxboS#cCu)`>#CdJ{FC&sesIQWi|??>=;W6F(b)Z-x@Z8JLwG$5A^f zo=+I6VO-wM+H)_U>+4*>!h!jRuzI*?Y9xyMA6_3LTEYTk+%!Lofj%#+VsDn7l-@5r zd+2^Im=tv~9^Kl27;vHD@PXgslb2xEw^_!nKfl$1QWv%-nF+?d>n8hA!Z-BQdJ|~B z$hU*JcH0=W6OSd%D83yssb_=guiq+jrf-rf*<2EE4A@of9rTVk-@&exj|GhrGOs2& zjEmZ;jU-h>XU}>MT>Juv!qfMru8e1&Kv%|lnO3iB>?}Gq#=e(75Xdj$kcI!I3^+>Z zbm(2dN?!58?e%r6qgt<{^ZPch_16b#n^c;`aSgTMI`>fGW$b>14%+w)?u&hEXV>dd}-V4YzIHG{0m8ylr|Qswq}?p{8+%CQW;z;)4O5iOhG zaCZ1+12i6bt1*%34h5jKB&8i{Jlc`F&)t3G$lbGHpwbD=B1%|&dS0d)Jtk{%Q!lIe zi(fgq*=}#XWwWgjxj-4KsYF-{G)2#y=WyC5xObX_;v`xf5b1RhGj2FC z;_-0z29SP1=iqWU$JazBx+M-0z#rlw`Y*c$52Wm9tm*)xsvup4h3a^8Br=MIx4<+z zu)HxB#+I!!_d{mcnJjo{W^=2~x67tIbLU-cd#rY}Gd6Cu&YWnes(IQn{nGfc@nT80 zjp`$E(O(M6dZ}1l7|-m_=>NPvB(L)`4t<*D%yLMIXd8nJEz0=iw(x9(5n65@X_leg z!cJu)-tJVDjY=ofZlE1!8xM6=L2C)xN%)>YUVCaE`f5kqmmO;hbYv6`UgIw%^Vr4 zpL1&yKYP7!eaCZLrgJj43ywQXrl`o3CqL|mZ0Z~5nr_YgJ^0ly?Z>72MV9rOq#bQ% zT2ciKzrBfyl){O~Z4$2|`Yi4KADi51IaXVLGOdrUe! z;wxZXkt-c)5h7}TK5GV>ZX&S>P|gq@EpDzf12m}oW+_m{W~yPK^vH6dw5l-@H0N9Y zlkOHB!>^TQ31M_v)yK>K?sF<*>gP1ZF5Fe~{)CRtL~^y{7hWhiPwDETK`X5OL&GuP zuTUy|vlKjn3hF&U{ckbtv+yH494i#=xo6NGi#A>hqy@>x-9`Av;?FOA=}TWv{>c0n zzVHSAD_{8vm(An6LAYO3lxk8FR+n{Op?9K8Au3WG%o{@YRP%a_*; z(=<$j*o@gIv@lhnOjAsg>znEPp6AKy=g8}*?cr;Z%$d?FK=F9C>l$ksU5&-zeJ2T8 zzfvTGg!1GhH4CM8E?Y&{vP)(lT%o>j&GsxqMz;k` zlMRdCSdU{F#bAwvx^4_Rq~+*ekk)tx%STgxSw7y-8pnCMh;SJFQ4()Lf3Ww-1<+$g zRw`4AO;MfQe?olSRkuIQq@K7|gK%E)RSuVY0W|(MfzJO9-bPphjNBBFn4_;jQY~T) zMH)VqrRIS41W7+y?xK{@Tto1>ei!{f7v)#6GW8hVslMxi*Y)cRggn`{$0w_E-MQ-2 zxLqKOF`^rx^Fb#tHto;YFf~sHWFD%5t+lH1f1>4h?yS0oz!FY-v$t5QE%r9suB&Nf z%c@tab?fu~SZ%fiUA`p|ZriW%Hb!eNgAO-A5Dg#1CY~`uWSfFX%m2o(6e{UK=P=-0)Vj-m=vp}{GWj@mrm!M9*H8Tt2+}UGW898*)5Z1bO5G2XS9?FIWounz$RiA#4g79jI!(>l^0W zy|X`k`HrcpEEamCv6lzv#Z*7?@OKT{Yn2&IqlKR9K|y}*33No@qnnESBB+HGb% ztI9S#LlioNu?dJ2qbXCcaE)RAO6eH~ZD?a(nmYYx1YL3;w-F<@o4hYS^UO1UFoMMU zlub%EmHYN0wZGKwZ;T*UcdCR`or%0{g-XXjR=-y|C%sF0QTlz{m+cKZU7bj_4zlDG zxil7$aQ}d&U+eYbb4&|`-C?9hS8kriPgtent%&3ke%y`W@ZwLAmN|wQjQx0q;f}V~ z*SA9V6&@h%h62Mbcl^%48vL@*&<73|M5vEAS~~7*z{9$=$L-6S(!zUixU$}kiw)g2 z-*5JLV#pHz))atkYKGkgI$l<)1+ zbH+{m6_k=+(M_2CQvAK_urt_}R}Stwx!d*it;`?s%0Aub6*Q4?Lh?RzF3+=+IGMyc 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

    V5sL;~RGzKe44( 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࿣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

    E0Q>dwTHGr5Eml?v4A4cqksyc*{&0*B}<_UWD zV7m)9{18SRG&tIxc?GdkB0fCQ7Fsid?;mS)cT3`(T2&XO}VK z?JljaTNM7d$yrfSAk=j{c=z|AUs&;p=zZfo9W936)vjfkvXz&1@{O#{jH2z+yG72{ zmAWz)51m*CAqQb4gHN=SorKpKe9_Lf%50joijC?SDRRZKwJWMjOxsjibK{50rxswv z5p|A;FUj(eRP@k~l{(A1Und$Aq!fyB{_L6jVwmxD2@GeIR-U!aoYoc~U&va2PyXxQ z>i~?9wS+3EAHbso=}(61aEC5)R<_nVA8n$uw`~GCR!KbUpqc3V`y29sRqwC=r(bUq zwCuw%%9*R|UM~XMU555R3tQXci8i0w8qgy{;Qr9`^z2)TM=Eu#_uOu&{By)12 z84}??gZB(Cd!-W5|Dv4ghOxs!?W6qvHHxC3zBZS9frjJu6~*A|D}VJDa_TQ_-oHQ} zB%na2H%HNbO%^_CF4sV$Pg(O)7p*#cWsu5TrGZSJy5`j?+IjfhAiB9s1K~PF!e^C% za&z7W)P!*N1`=nywiia9YX?@%sT(-g@tpB}UWk4!7??FDZ(v`?h2!172>jeTuxk!z z;9kdv;(`FhzooL#0Fvj@##?U!=nf3AsSZ{el%hzg{W%b6@$DGgDV<8x}F!N zsNCV)Vcegy2H7D>kSU1H6%_&t!G@qhi1^X=p!A{iVeX>3h9f27GVJnm`=BT!5b^}U zfJ8$~u8_es=tT%>2u{e$5G)`nAUt`H8Da-HfsjM8AbOBBh#;gL;tP3z;6sujYLGby zH>4io3b}*;AVm-}$R0!j((i`$`c33(%a3oOa6GcZ4YDKr^~2=!Kidesz}P3C`9kl8 zV*HwXaMVq%gUFb&?xkK-_29}rm77WjnK5br0<>%4MYQVE4ZGm8l<~2LOB_ zfhK_~@k#<)0z(2H5Q#q+y-$CofuIPY0iqN|str~k^TQb+XoBeaUYJF44{{H14`uDM zUnyNpUFjgGp0S?Uo~fQif@u3t`ce8Z_aa>fkurQaa5>bzFM1Vt^>l@C6@6ubpbG+o zya+`N#R+{GiX{;V7);)0zOuVIxgx*Hy3)H^yAr%=zw*6$xWd0mzEZoIyW+m8zjD30 zyaHSmU720&T}fQ^+oPcp$iB9aC6L2$PnR-Cm+{w@l+%{B;R{1wAfS?`w?{FIAuArW zmun$1q^$j{D_32-vOs08(n4lPT^q3~cV2wAfNn3-Lbyqh2v(Udx94p^O)PeAAps?| zNg9D`=U45iTR1oIK*>ImqTqu0S$pyp_D$TMN%xY0;NJONdq4~KCjQT4JV^|2#QY$P zz>7r$hc+omQUP2tzW}4~;t;{3O;(j;2B&?EV5^LCoRA~7Ct68~R+ZPP49~5M3R;$* zQV)|}mNMZ>w4LY3m6=*#g=u?HiO?2=&&t{rH!ldojJ@bY048BvvgF0_3yd&LFUl?& zlkhrOz2fQxewd*bZ5Q26n2W4naoz$aOxKILi*_gcLe{sqdqEs#>ILWmh=&2AfQi5e zU_3Aym`o>&UmU$a57W4%2%r%UFO*d)u2|rO8QjtY(DjCy%5oQTf8z#cEwICsU{f%i zTdLn!zuA6M{T2zJ?G5h>?~C1)buC6p$>q08aQlKNED-ht!+=G@Om67{0Ks7)ks%2o zpF`q+vVh{`1!kBX>;y&*%Yx~_)?k9Lc9<{h0frAthN;2kVBD~Jm@DiO27nd8%wT&k z30S`$8qWKX*H+5!M{zv!2MzLv{f!6YjE8K*!Z5B0=*H;%P)uXU_ecHYdWcLZ>p$y_ zR`0J|Q~9a%keO1~N34yW@84ac`^oeW?ouQls9cr%@%Er5@4NSqxF)p^7#-AJts)ye z=PsUWvhRTCLBZ9mA9)Y^F79R0!$9Cc@6|5S2Do?eFO%^HFb*QF1`z~7EI=GUQu2Vp zLCMtu(hN9&cz|TJ0p^3Wh6whKIH&bdVn3p_#%Q%Mt&Z@#j;P@6u_?DOne9Onu|&Ho zj>6%oYgUAI5EYQND12_jZom0j7-1Yl2LzafagUJi$6qrdG=nJnXw1UvNA&iqulW&% zNaLZ~3v(S2+|Rq_MCb-l_tEZ!Uyk_hcVCMmOoIS@0EsY(D2YUg2#I)!Xo+ON2>yQb zH9bP(nIeQnBD`osZNK807h&*B6GGP?W;VjT&kf-|$hu}nC?Td0I?q&pvHr6CrTQxp zLfapXl-Ruy*L|cMUP3Mp+OI_sfruvr1|k|^@=O;32n`F33{43A92zGv0@zQ!W=7Z{ zP7vgXEQB6n4IzkVNBANh5cr5>gc@QF!HuX#xFRkQ07MbO46%ohK=fOqy?o6OV=n!g zF~KeMtwAcizvde`&385*B+(}cD4FQ3Q4BtkrHoq3H4z!))JW?xR;R2?Qdz4sks0LG z$gDD+r`%1VTgx;NZe%Bmp4QS%tNQSH7y}?M0m>7f-c(4d3(5NQ8QAjPBSb$P^a0n;S zsHwhTPECuEVJlU19APB3PF;>wP-W68mC7xZ3tD8F`Y0*A_}1iuitPkP4*k?5D^%Nq zO1L0jYL>w+rFl{qYV1KLTx2ZC#Xz1CKgkHy^q}m_HLUlc;I}5g@E*N}Mx+le7g1o6#n^Q zQiTj^DHW5vP=gy9|H2+gQwHu7?yuabS(EHgCFm4X=Z5ML>yhn|>QThMphv1ts_)Y- zgKG*>(k{PVrnXOtLIa^sPz-1^)Z~WFzbHsDL^eb@L^?zf$N)%5o@9pFK~JFM&@8AP zbPXy9ZHM|oAE5ZqWT+Z+4$2L!hq^*9p#W$R)C{@@m4Nnpp<%I<##kz{lqGoN78~T2 z_#1wcGX&d+NMf84(3aDCp_qImUl{e0>moAAsgu?#t6o?+rSekgA~VUWlUXY}U${F( z_mb%%+{sQ_RDqRy@peTfEx323yQsE*Gg_>Lts?yx=T4G~n(sH!#RAx@7kL-^PU3~? z!?(c2Uf3?ut#R)pU#Q`K!&r=f4c-z2u!twnsV09@SS*1pAUzw0coLnO+BfFKv`QKF z7DcD!GGedP)$a;w73;QI^O1T%f=eZZNPT6mjZl`W_epCIy`os2z>W@fpL7!B=RR5>FQr88fEM3lD zF1DYF-Ui-2-D2EE-fNs03f{Kg z`rba=;@>9Us@=}ra^Ke9y53&i0&a_L&2IN@C2sqj(aW$c*x8hgWUR8}ByIon_hx zx3UwPRMyL#dD|ir8{ON|L9=bw|Ct9~RLB+Sw#?g{G4A1vrHdhiDS*oT@ogTg?y0 zX&Yka)RmlZRa>o^!Q7hBpjF!`{Q>D!3lo7E+jWjStEmlExV8_KXhFf?thHTZ^M)|o z*oRKE$Yg-an!GW7gAuOjL)o2gGFWG=*I2#54>$Co?JnFIaIqF_%-i6E>-tc47wimP zSo=11Z-~Q9eE{7>;sd}@;0$mWI0YOB&e2)pH%4#J!!_iuH2KO|9 zg}no&*4&NU4ctvx8|-i;_!L~{p6UtfiS3E%NhGkKcd&1;Z*te#wGk=JmkpOq?Hi)- zK=>0J10D@Gxu**(3LXd<37HNV3i$!F1~evbFvIQOCvb9j7F-X$1{Z|4!+qfoaC|t@ zwZZ4$-0*t1EBq1;fEU5d;CpZhcz+NYo)9#~N>%76!LxARpzzS&6e4GOU;`Y$cq9NE z(+8oLO^{!Y2FdjindQ_E=^a&HuRKx(sq~SV<<$?b9i3m_J)#H6^bzi5C*PucaNw124r^kO@K3Y2#%t|sYljl?GP%7f}+7WsNHq*qwuqF2%SWc*#I|`{5t-T z@mVv3vOnK!upX*+UH!=aY={hTg?j_8P{HfGN6u&65bFMdy}?VUZ*5p+LL#{Ub!~uD z>wc1|Um|*P_Saz>6XqD387w8uK6)nWE#DC=E7m0jxS{2FyVXZOhFqSOcQ4{epG4k5tvW^P zZIos@g`3guQEwQ7MyfK>q&ke5t4NO(XXd*)DT?db#BX>lO55-7aRubP{iY;#tBSJo zbj1-@u;SCY`{$(V#p^BYZ*9EM`SKXTGgO|2tpg8^+s5Nqs@>vet&XNErwA0HgqZ#> zdA^?=ck)*KZN8)zyt%TIZ{MvsR!v%c&e2u0?;tKfF?!uI8Bk%*zSCAr%B)VPuZ_;l zsEszu+_NQ+wDQHQAop6@H+(-tFH^Ce!>YaLShA=mwQOPpw1<7{dyZ|n65sb`vv!%j z-r3zd*{2EnU$Rx`8}|LblADd&)mzf~4-rWPHta*;z)o}49UlP;rZ2k()UdRvOiMfY ztn`eWT}xV6T63)BnF6HEgt;m(eCrgws|G_WPH~k)*K891{`^&2X;U_q^O1Xl*_^@R zyF}5uflJj@h4VW5Vz%vhF}z{J^R}Pc837}sJeQo0`;W!}Jx0QS!nv}qM0yDZX2prq z=gZUsigkivK5XSHkyX-aP4;ryXN3ME-dOvUOSvRDHNR_B-*lZ8r=QKX$vxAW~r!1UCA*a@695sk*SCcv{v&* zHw9k$&K>+ww%%zfJf&L4s7^Q0SWQkd`5mT~2gPJTIj3)~eBnLFe=`}Xty*4^KV9na zL5s9ZMA)#lTPHX#C!36+O4vgDratGTrUpuyPfqN2taTT!VTNzk2AH;YGCBmYdqJZP zd_nzX-H|a2jbxfcyvmWtwH#_$M7*-gDXSzY5>|4;2%U5Htd#jLcFM7qhU|>m+QUBC zvHo=jky>?0F^>6bS&c0IatT5%@rOroON6Zfs&b4tRQ~;jUqK8^-W5E9I2NSs7cEub z)vm-ZF6~%Ri7*Xo;v_~ShiB&ry0Y1r{%G}VELWNKwP8prdriqaYP|pVcNl+dO!^P2 zE~=c}R|>4z66?0E|EP*_ugQghXnojxVFtFV`rjzqLv1c-h7PSR|k1>`v)Od!Thqt??dZnzL&x_QaZ{N;tS$nzHuCeXFHq`F=hbs+&JD6O4Ql+Sq72umfMe%=Elb}qj!NjI*4_~6QXmn zxvDDRu?88hH(?2@XuLDEdlnYSs|3C!PcUHcdg_6Yk~p|PobYv;Prz*Vh zq0%g|^6IU#g6}LTFw*Fa^TI@Qag?KD?^{dhwl(T^x>X{$!pE`xT`uaF0HS%)Oc`^0 zBL~p?a{h`EE3VQ~l=vBkyj9&)hDb)oi_+}XRD`xtLJt2`S?h?>l2cAfefBB`H+bNz z*R(Wq+u%b`c_~AZr1FdHLZS4`5uU>?Ephk%+RsME748WkP0~R29fhL!f%?!PhK90J zgg}9ko%|B(W1yBOV4$8zM1n16bJ?3C7xtfDyhCu;~(8QntH4B|Vg%l`0Gn!1QP{!rY2rieM-Fy51g4#TvHxCP03 zkbR{+PjHuK7Y|w*ZoV!l&t*yZg`6q43vy&ALl6^hrl0HlYLn!*`2B&&(Ofir zr{pvpXG&?FR9xREH{nZ6-fK7>clly*`Igi$wy3|H+)UaZ8(qTsQ{^s7v@-m}(n&5X zHiC$P50%U58wd9u8b$dkB*f8%XAK81BabtrH`ZKLuQ#ha5;STckNSO=&q&I5(N+>? zo83FHKz|dX6rHp(ZcS{e{k|~A+OjI;d)~{@+7HA_`O;mu8i|cP1dqJsA>%8TnuPKU z>UX`mx^HMg3QI#+T|;*vfK#kHS*gI$h(|Eb|X#_C8vZ7may_pqQ9A z7V1V9Q9JSF*HdWV&w~rY>dqaTSDT~~bgRmTALC^($?prSL?Y5{HFgL`moH)#!AFyA ztBc@_Hk+6-KK75@?6w?7kqYQK@2oAwi0HR=IUlNqGYR&BzbmwKUJMesJeZ4D{p4i* z>{0J%_m(SCGueK;EUuWFs|-(nsK#MFGgakd8&#eX8t(ZJ_&P!uoc(d`auu$_lxAv3 z+k|GtiEQJTX<`xijM-Nos=m0A{f>74&Cd@Q_4VwJQL2{K*y_$>hA!SF6LOB)PbXOL z2&#IIJFTmxj;l`Xv@ChF=MV5a)uq3$ahIv>lui3R+G`2%tF08i>qc5snz?4ON2a-$ zV9DJd=b=O`xs)ouQtX=47o*JGRpJaY!pa9FO*H{?^a3}+e?|6tk{ z8)?{T0)W50qVh&2VxHW>(vW2)qTPmH zLGRhTVB7l`7PT@^>puj}6yII1-1g*U3NGqn;bcrJEcU1Q(NNi+)?NSLSVzeU>ZB{2 z|F-3`6Qq1%tg*iHhVNXJFjJRs#ZO&DXd1zi(4Az&zLkn)i>bUnR*IKJ5#=s4W%|S5 zWu_1}Mnar1aprk0&jPaOoFhM$kJ2>UdqzLq;k)-t3z&RvG1qVno&xQ%HEderU*d8! z;pP0VrZmsbkl3@o<-O6z>qz8*?ElKCF6EMoDD|NM-Js@7!F`nnv)C}fMD)<-$To==QwoVT^@w6#&zIAJ$K zQLas3p;`NRqo+q;TAh&CWHHxmjbry6N;aZ8W>)+>Zu6Uh3)o!sPwvo~zS3bP-|WsO zD|!|JKNnogbZ@oH69zA5qRgH0&?e?&ThuOd&rEX~ry-nA!fY0eV?%BD+wVzcYW8!v zLj8c`#96S|#M+GJNW#R{+S6G%J4C=rDp|Q$n!3Qg43$9sg|&Fo$2bR&`cmc=X>bSE zg0$j?(2}%xe!)gk^1p!b{Ia|!BC98BnYz)^3wDi};2FPK)~7xO?(SNL z_P1iKAUweobiDz41LHha-0Ltq*+sFN@^+tF>gcmsv-~n7BS`t;dEy>aW0Kk z;&*CYIkJwe@7+>Ur0pW0ocCguj3`5@H^xm!+8hbqCoz-$zKKk@YN$P3G`Nd5ZwJ<&2cuw zEhqb3c+-K}eJ_~mqrD-0kz3V`^C(HKn;|{12f6p_~efO#KxBW#=yp%yogsVlHecE{*^>5sL)Za@Bi~g5LZMx=CS(AB4 zyPShCYZ=mv7b#T~K@DbVfhvl~5s2Ce2iHnCQ1~Yg*Aa44;Ad%wbAK*wYFGU$Fe5;u z;O~cmnBOh`)x>Rv<}#C(RU9Vh`J(@ZMg{*^7jtI|c2{)lx?$++n?ZhsMIL4+(uh9+ z$!jh!os(Z|cU~Ewwdud+^|^Il!E;z8rhatMUKXRaza)#c&lk2e>c?Hy4;S!H0!uY7 zItzU4`nDW=7ePW-Rd;?nq1L7qUa{yqUwBq9p6&(EP{y%gp{f$^CiCXXe^Ss+_$lxjN zl^WH7YiC&{!weG0bE9Q)DapyswB)mm(l92E*+Ku+29{w0apk!klC(EE58ZvEXl142 zF|pL8{$cQWHfY=S15Y9ixOXd?D!Nj|+R`yq5EQ1Mthb?Ez+K7^tni6;j>*_=r)o)9 zY5uOH9WN_Tr(n;zh_ih2Z5{GPXR^~5En_0%8njTtVWP^gGh=|pNAbzo{QOp-6=Uh1 zk>W*XW;`8sS$^e|)5ztZKSA^#@`O5@U8I?MV@J$(?rPNURGU*8(h3}yF?~D&KTIx6 z79Xi-6HOV}mx&(DGM08Oca_=BcvKol<@R|i&D?jWWHOChDl^DxTf{GKkvXUsmhP~w zk0`d%uBP_1)+%GnDjyJNr(P8|Bylp)DIIXvFcU^jQIX{oDi3)@qNNIX!#&Q|eb;h+ zGFXr0s9I)U|D>>`*8PIoc#sD&%*l2Vu&#CfVY`+xEUmU-W<_C=(OMYmc80h+^qeIcr82k6R%7Rd{XXJvn~BJ0l2(~p4fy(q@{bNt>Mj% zJpt=O)u`;exPq+Gq>>m|C!nC_PIFGSedPn8W+HFe!n^ga(!3r9WoOtGNKzdeOI)Q$ zrX5@VMbLMv%b7UAjk|7(!PmqtON466?_+oHKrVf$2HB~_(lBz<^_AucRRlN%WJ~6u#vZLa_&P|fvJE|uBl#6&C zT9Wr+#2>K0d{rUi9%+3N4)QcrJVnmFNQw;uHKS$JPcxvVSoLM~>4bkWET2Axtf*vYm&R|S<;`g?Kf`BpXFhIGq$-s(-NJokGZ z88?%@RT9pPEJpiITArZXL<=RBk2JDIMq-w7n9KfLJ8_nAs6;iVr$m`7?8z6c=OI(L zq&TDY614AMc?M7_>k*xYWq$G4=&Z45+A3^D1-pIvV;KJevjXc&RM(d3Y6KAzF@$hx zZD(U$O?i2-{cThipshEl@yT!Ghj%}9r48jTE+tmNA)n!M5~AJft(^^{2FX9HM4xO$=QF%>B}47 z@g`u^`Gd+EEX_M=+g{yUQ*4d*^&u+o>8}ZERln0X>kqXyl8k6CT1P&fdmsOJiTIwV zs$`BO$kfUlsJBGaF!IW@dgo_?VPLht5#edPE{pFp>e+;zRCU47B)F+nHqo0Z!^QKx z?e#kyVNUNY`joE$a<$vlV}#WrImtO@o=Su~p5XQB5BQe#i@=zY#B!3xYLPz_DF(I# zf@|two$6kT?`(K7{fRw)_vp%|3y6zB|om5%;NO3SJcO2X^;Cc>sjn%~sGc;uTXo1iTe zT<8~hb6X#h=IaL>M-vBM8!1mc#{Bqe$0)O`UB!%qq+HlHHxnwS&d~gif*bZ&f7n!T z)s$&?{&?p!k~1sYxUceB^ew@?-kSrKs$sqi7a9D>2+YLUd~!`qCR_T+4Vt@<@4~?= z)nrS|As=`~Z)VnNnq;zEOg%}94sH~dmvnUt83o4|`1tG;rVCC$JQXn%OOc)9B=^)J zFCVLHvNakGBegag+0T;1zSH>z>Vut2sCx-zNf^M**HyyTTXDM^i`o3N^>2SuxYSv_ zgt5h-vP|4l_`=03J6IRVIp7HXemNT}xIny$Ubc*f&}tO1*8c8oM5pu;$XnqEL&D4W zO9pAB*C@lmS zme~FQ{9te3ro)$-<8`>GhiJr*Kbh%|4tk5+ghyQ4a7rkyV8i=07)IV z5lKAgEnFeo>3`;2kTTW#;c!}WGzVz7=nV4nNayP!1oKH9=mS);iiV8&GbifRL67Q|Q`TNQ`3*v89@Wm{@Oo2XjL zpjGS)CPP)GG4KAdrK2`;+XNE)4MfxUs<3tPF)SZZo%^Z)En>#_6ECZwkN?^I&>jqbgA=!w)`cNvb{NI$J;TF zxh3;zuJjs4W6}D!>XsjE@2r%u-)%;|epVUNbQb%Ooqu|ESw>;8>c#y<1Gj0ifl_KA5yxqrz|+ZFRT`gJ{NUU1k||@1 zS&hmk*+$DP&)Q2rYfD4Nz_c{ak{c@k)1U14_q7YqkJ3!#Js>=i6UG=gn(gb<`uz44 zJ}ED@p?V%>RF=x5H)keDCyKT1Nue|`@quJ9{{x$A_MBh3MtSe z0|BCiU&R0cQJzQ^p?S27#Vqn)2Y@vi?a#ktHUeMyO8g7pCmCYIFR}tx82q22M(I)%@;T0bhs!K08AL6g2`1~m zZEcyM&%~y&kgVkX*{MtyQ;*;s9jNUByNxb)&@&NE&*%44y#wq_4=Hho+3vezb8}+C zjmDjtFadn?rcG*}gol@jmxSuMkE=z#OjJK-Cthh)`_mG2q+M{V?Qv0?Nb?gsth!83 z3J!Yp#yIHG^HZ_2G;y5R`()As?af7|GShjdtqm-R5Ts`5#eh&P%Lzyl?~(jcyQN`C zZk+l~t^{ z)OJ#r362#>61f(4X%Z5iCs1=~IHRpauPD!g8-~nd!F2BVvV4hx*2hoSe7}y2otG24 zufu@`feCBJV37vRej0h+Gyl&Y+vWZ=Ieh&kG=1oQ@z1}I8n*N$W6|sAv(ht}*LMY) zM!%a>_fEZ)_NAK{>e-vL_)i)eH*Tdd2AkR~=~`!m5nADgFhzXIg0! z-4V4 zBejN}6Ef8f2OYnunda-l)eL7(K4g>K@wPJ-e0IY9>Tg7u6bl00#YAPZ=P_8)W8D@^ z{L~>YLw%CH5W{=L$~jr5;YDx<+7m(onMURsPg*s>9+R54zmkP9D~>n02n(vR4bNs* zP2Czu>pod6BAWNykYL+ut>}o)ZUe^S2f_MutQ!ri9`EV(Wc=1WHgAFhIrelJZtRr* zB;iNha8g$+)QQ?+cfEBCGNf+k*p74Y!eW(cX7NJCQLNT3M>TOD08A@dGfuU5x#Wms z&1Kp=MYCNek1$giNK(G5%}4*9fw|6Q#| z8=GF<%gzyfa3@b-WSaz3W6U!3uoPEeYb4>8-M9_6$lN*Q=QJ2C5Z79+XIyFsbdeIj z0l&g3+vRD_NPV|@;WgB%weBmh z;{;Q_@AemVUz&I#25bgw4#zvaSHVq38natnwZLR~I#rT$8FcZ3p~!ejd7>Tjeqj2? zNkRNYL*e3MYK;Ft?6$);s3jEEWP`RqCMQqR`z7l=|Lur!ZQ!VKV#-GL?9J=rWxBk- zbhZW-z11}mQx@32smm2pT;!q-j(*mFGm9vTGZ~0>!k%fgVVu6rJXv$v!%f>G_GfhR zMWY`v-wmZAaRP=TDW5S`e6Y(22e4ESXJyR{?3k~@N2sSq7g>ckMrh3veX;rXu74fs z6ZywBsVFmGB!9n4+L0qSqtah>Jn_t+Ub*!hmlka(+txMn(PHj)bi%g|%&4)_+(h?y z2MP~QT6)?&*GOqRL)96x<%N0#MxDT1YWu*6JBxxLl+_NC-LWQMP%`-a+k1fz^;+@; zj7~9IQ&=RyZ!`z1P&qklr;f>?*5!CBF=+E_BBGY3)G@WHAFj{U3kF=*PQdF7 zTtDJBA5)6D?Bl{rgntr0R(G^ES=<+lztqU~mR0e{r8`$<2Q=`ih&oEdPsTrA;@=vW z^lMoCeufiy((B5;gT!FG3*|Cc`%kwd<{9(Aj~41v1lp*mra*jNkzQOf*S9 zh^=$76){?gGKB06VFK(;1Gjc6ej|SEWn0{Y1Fn;Mv)j_w?Cp6+ZThWjdpi7E_`Lyj zTXA+%+E%+Dy_MepqOh|$9_wxk8|}*~BDDA$JNl3{dsquNPD={ar zmKb|E#n6gr!t99lh%Gmj0?zcoMw~?a$+mpnTrAL2)k{yg(BM?pxNZ9(&(iDYjID)K N7Xi?h+IjWj{{hmn!3F>T literal 0 HcmV?d00001 diff --git a/site_libs/bootstrap/bootstrap.min.css b/site_libs/bootstrap/bootstrap.min.css new file mode 100644 index 0000000..30038d1 --- /dev/null +++ b/site_libs/bootstrap/bootstrap.min.css @@ -0,0 +1,10 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import"https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap";:root{--bs-blue: #2780e3;--bs-indigo: #6610f2;--bs-purple: #613d7c;--bs-pink: #e83e8c;--bs-red: #ff0039;--bs-orange: #f0ad4e;--bs-yellow: #ff7518;--bs-green: #3fb618;--bs-teal: #20c997;--bs-cyan: #9954bb;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #373a3c;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #373a3c;--bs-gray-900: #212529;--bs-default: #373a3c;--bs-primary: #2780e3;--bs-secondary: #373a3c;--bs-success: #3fb618;--bs-info: #9954bb;--bs-warning: #ff7518;--bs-danger: #ff0039;--bs-light: #f8f9fa;--bs-dark: #373a3c;--bs-default-rgb: 55, 58, 60;--bs-primary-rgb: 39, 128, 227;--bs-secondary-rgb: 55, 58, 60;--bs-success-rgb: 63, 182, 24;--bs-info-rgb: 153, 84, 187;--bs-warning-rgb: 255, 117, 24;--bs-danger-rgb: 255, 0, 57;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 55, 58, 60;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-body-color-rgb: 55, 58, 60;--bs-body-bg-rgb: 255, 255, 255;--bs-font-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #373a3c;--bs-body-bg: #fff}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#2780e3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{color:#1f66b6}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr /* rtl:ignore */;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f7f7f7;padding:.5rem;border:1px solid #dee2e6}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:#9753b8;background-color:#f7f7f7;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#212529}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:#6c757d}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #373a3c;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #373a3c;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #373a3c;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#373a3c;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid #b6babc}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #d4e6f9;--bs-table-striped-bg: #c9dbed;--bs-table-striped-color: #000;--bs-table-active-bg: #bfcfe0;--bs-table-active-color: #000;--bs-table-hover-bg: #c4d5e6;--bs-table-hover-color: #000;color:#000;border-color:#bfcfe0}.table-secondary{--bs-table-bg: #d7d8d8;--bs-table-striped-bg: #cccdcd;--bs-table-striped-color: #000;--bs-table-active-bg: #c2c2c2;--bs-table-active-color: #000;--bs-table-hover-bg: #c7c8c8;--bs-table-hover-color: #000;color:#000;border-color:#c2c2c2}.table-success{--bs-table-bg: #d9f0d1;--bs-table-striped-bg: #cee4c7;--bs-table-striped-color: #000;--bs-table-active-bg: #c3d8bc;--bs-table-active-color: #000;--bs-table-hover-bg: #c9dec1;--bs-table-hover-color: #000;color:#000;border-color:#c3d8bc}.table-info{--bs-table-bg: #ebddf1;--bs-table-striped-bg: #dfd2e5;--bs-table-striped-color: #000;--bs-table-active-bg: #d4c7d9;--bs-table-active-color: #000;--bs-table-hover-bg: #d9ccdf;--bs-table-hover-color: #000;color:#000;border-color:#d4c7d9}.table-warning{--bs-table-bg: #ffe3d1;--bs-table-striped-bg: #f2d8c7;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ccbc;--bs-table-active-color: #000;--bs-table-hover-bg: #ecd2c1;--bs-table-hover-color: #000;color:#000;border-color:#e6ccbc}.table-danger{--bs-table-bg: #ffccd7;--bs-table-striped-bg: #f2c2cc;--bs-table-striped-color: #000;--bs-table-active-bg: #e6b8c2;--bs-table-active-color: #000;--bs-table-hover-bg: #ecbdc7;--bs-table-hover-color: #000;color:#000;border-color:#e6b8c2}.table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg: #373a3c;--bs-table-striped-bg: #414446;--bs-table-striped-color: #fff;--bs-table-active-bg: #4b4e50;--bs-table-active-color: #fff;--bs-table-hover-bg: #46494b;--bs-table-hover-color: #fff;color:#fff;border-color:#4b4e50}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#373a3c;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#373a3c;background-color:#fff;border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#373a3c;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#373a3c;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#373a3c;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:0.875rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em}.form-control-color::-webkit-color-swatch{height:1.5em}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#373a3c;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23373a3c' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #373a3c}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;color-adjust:exact;-webkit-print-color-adjust:exact}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2780e3;border-color:#2780e3}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2780e3;border-color:#2780e3;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2393c0f1'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline,.shiny-input-container .checkbox-inline,.shiny-input-container .radio-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:rgba(0,0,0,0);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#bed9f7}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0)}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#bed9f7}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#dee2e6;border-color:rgba(0,0,0,0)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#373a3c;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3fb618}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(63,182,24,.9)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3fb618;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3fb618}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23373a3c' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3fb618}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3fb618}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3fb618}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#ff0039}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:rgba(255,0,57,.9)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#ff0039;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#ff0039}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23373a3c' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#ff0039}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#ff0039}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#ff0039}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#373a3c;text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.375rem .75rem;font-size:1rem;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#373a3c}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-default{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-default:hover{color:#fff;background-color:#2f3133;border-color:#2c2e30}.btn-check:focus+.btn-default,.btn-default:focus{color:#fff;background-color:#2f3133;border-color:#2c2e30;box-shadow:0 0 0 .25rem rgba(85,88,89,.5)}.btn-check:checked+.btn-default,.btn-check:active+.btn-default,.btn-default:active,.btn-default.active,.show>.btn-default.dropdown-toggle{color:#fff;background-color:#2c2e30;border-color:#292c2d}.btn-check:checked+.btn-default:focus,.btn-check:active+.btn-default:focus,.btn-default:active:focus,.btn-default.active:focus,.show>.btn-default.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(85,88,89,.5)}.btn-default:disabled,.btn-default.disabled{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-primary{color:#fff;background-color:#2780e3;border-color:#2780e3}.btn-primary:hover{color:#fff;background-color:#216dc1;border-color:#1f66b6}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#216dc1;border-color:#1f66b6;box-shadow:0 0 0 .25rem rgba(71,147,231,.5)}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#1f66b6;border-color:#1d60aa}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(71,147,231,.5)}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#2780e3;border-color:#2780e3}.btn-secondary{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-secondary:hover{color:#fff;background-color:#2f3133;border-color:#2c2e30}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#2f3133;border-color:#2c2e30;box-shadow:0 0 0 .25rem rgba(85,88,89,.5)}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#2c2e30;border-color:#292c2d}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(85,88,89,.5)}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-success{color:#fff;background-color:#3fb618;border-color:#3fb618}.btn-success:hover{color:#fff;background-color:#369b14;border-color:#329213}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#369b14;border-color:#329213;box-shadow:0 0 0 .25rem rgba(92,193,59,.5)}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#329213;border-color:#2f8912}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(92,193,59,.5)}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#3fb618;border-color:#3fb618}.btn-info{color:#fff;background-color:#9954bb;border-color:#9954bb}.btn-info:hover{color:#fff;background-color:#82479f;border-color:#7a4396}.btn-check:focus+.btn-info,.btn-info:focus{color:#fff;background-color:#82479f;border-color:#7a4396;box-shadow:0 0 0 .25rem rgba(168,110,197,.5)}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#7a4396;border-color:#733f8c}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(168,110,197,.5)}.btn-info:disabled,.btn-info.disabled{color:#fff;background-color:#9954bb;border-color:#9954bb}.btn-warning{color:#fff;background-color:#ff7518;border-color:#ff7518}.btn-warning:hover{color:#fff;background-color:#d96314;border-color:#cc5e13}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#fff;background-color:#d96314;border-color:#cc5e13;box-shadow:0 0 0 .25rem rgba(255,138,59,.5)}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#cc5e13;border-color:#bf5812}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(255,138,59,.5)}.btn-warning:disabled,.btn-warning.disabled{color:#fff;background-color:#ff7518;border-color:#ff7518}.btn-danger{color:#fff;background-color:#ff0039;border-color:#ff0039}.btn-danger:hover{color:#fff;background-color:#d90030;border-color:#cc002e}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#d90030;border-color:#cc002e;box-shadow:0 0 0 .25rem rgba(255,38,87,.5)}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#cc002e;border-color:#bf002b}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(255,38,87,.5)}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#ff0039;border-color:#ff0039}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-dark:hover{color:#fff;background-color:#2f3133;border-color:#2c2e30}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#2f3133;border-color:#2c2e30;box-shadow:0 0 0 .25rem rgba(85,88,89,.5)}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#2c2e30;border-color:#292c2d}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(85,88,89,.5)}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-outline-default{color:#373a3c;border-color:#373a3c;background-color:rgba(0,0,0,0)}.btn-outline-default:hover{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-check:focus+.btn-outline-default,.btn-outline-default:focus{box-shadow:0 0 0 .25rem rgba(55,58,60,.5)}.btn-check:checked+.btn-outline-default,.btn-check:active+.btn-outline-default,.btn-outline-default:active,.btn-outline-default.active,.btn-outline-default.dropdown-toggle.show{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-check:checked+.btn-outline-default:focus,.btn-check:active+.btn-outline-default:focus,.btn-outline-default:active:focus,.btn-outline-default.active:focus,.btn-outline-default.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(55,58,60,.5)}.btn-outline-default:disabled,.btn-outline-default.disabled{color:#373a3c;background-color:rgba(0,0,0,0)}.btn-outline-primary{color:#2780e3;border-color:#2780e3;background-color:rgba(0,0,0,0)}.btn-outline-primary:hover{color:#fff;background-color:#2780e3;border-color:#2780e3}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(39,128,227,.5)}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#2780e3;border-color:#2780e3}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(39,128,227,.5)}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#2780e3;background-color:rgba(0,0,0,0)}.btn-outline-secondary{color:#373a3c;border-color:#373a3c;background-color:rgba(0,0,0,0)}.btn-outline-secondary:hover{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(55,58,60,.5)}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(55,58,60,.5)}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#373a3c;background-color:rgba(0,0,0,0)}.btn-outline-success{color:#3fb618;border-color:#3fb618;background-color:rgba(0,0,0,0)}.btn-outline-success:hover{color:#fff;background-color:#3fb618;border-color:#3fb618}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(63,182,24,.5)}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#3fb618;border-color:#3fb618}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(63,182,24,.5)}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#3fb618;background-color:rgba(0,0,0,0)}.btn-outline-info{color:#9954bb;border-color:#9954bb;background-color:rgba(0,0,0,0)}.btn-outline-info:hover{color:#fff;background-color:#9954bb;border-color:#9954bb}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(153,84,187,.5)}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#fff;background-color:#9954bb;border-color:#9954bb}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(153,84,187,.5)}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#9954bb;background-color:rgba(0,0,0,0)}.btn-outline-warning{color:#ff7518;border-color:#ff7518;background-color:rgba(0,0,0,0)}.btn-outline-warning:hover{color:#fff;background-color:#ff7518;border-color:#ff7518}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,117,24,.5)}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#fff;background-color:#ff7518;border-color:#ff7518}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(255,117,24,.5)}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#ff7518;background-color:rgba(0,0,0,0)}.btn-outline-danger{color:#ff0039;border-color:#ff0039;background-color:rgba(0,0,0,0)}.btn-outline-danger:hover{color:#fff;background-color:#ff0039;border-color:#ff0039}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(255,0,57,.5)}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#ff0039;border-color:#ff0039}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(255,0,57,.5)}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#ff0039;background-color:rgba(0,0,0,0)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa;background-color:rgba(0,0,0,0)}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#f8f9fa;background-color:rgba(0,0,0,0)}.btn-outline-dark{color:#373a3c;border-color:#373a3c;background-color:rgba(0,0,0,0)}.btn-outline-dark:hover{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(55,58,60,.5)}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#373a3c;border-color:#373a3c}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem rgba(55,58,60,.5)}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#373a3c;background-color:rgba(0,0,0,0)}.btn-link{font-weight:400;color:#2780e3;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:hover{color:#1f66b6}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:0}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#373a3c;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#2780e3}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:0.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#373a3c;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#2780e3}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.nav{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#2780e3;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#1f66b6}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid rgba(0,0,0,0)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px}.nav-pills .nav-link{background:none;border:0}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#2780e3}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container-xxl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:.25 0;font-size:1.25rem;line-height:1;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);transition:box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-top,.navbar-expand-sm .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-top,.navbar-expand-md .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-top,.navbar-expand-lg .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-top,.navbar-expand-xl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-top,.navbar-expand-xxl .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;-webkit-flex-grow:1;visibility:visible !important;background-color:rgba(0,0,0,0);border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-top,.navbar-expand .offcanvas-bottom{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-light{background-color:#2780e3}.navbar-light .navbar-brand{color:#fdfeff}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#fdfeff}.navbar-light .navbar-nav .nav-link{color:#fdfeff}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(253,254,255,.8)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(253,254,255,.75)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#fdfeff}.navbar-light .navbar-toggler{color:#fdfeff;border-color:rgba(253,254,255,0)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23fdfeff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#fdfeff}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#fdfeff}.navbar-dark{background-color:#2780e3}.navbar-dark .navbar-brand{color:#fdfeff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fdfeff}.navbar-dark .navbar-nav .nav-link{color:#fdfeff}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(253,254,255,.8)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(253,254,255,.75)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#fdfeff}.navbar-dark .navbar-toggler{color:#fdfeff;border-color:rgba(253,254,255,0)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23fdfeff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#fdfeff}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fdfeff}.card{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0}.card>.list-group:last-child{border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-0.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:#adb5bd;border-bottom:1px solid rgba(0,0,0,.125)}.card-footer{padding:.5rem 1rem;background-color:#adb5bd;border-top:1px solid rgba(0,0,0,.125)}.card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-group>.card{margin-bottom:.75rem}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#373a3c;text-align:left;background-color:#fff;border:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#2373cc;background-color:#e9f2fc;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232373cc'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23373a3c'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:not(:first-of-type){border-top:0}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.breadcrumb{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#2780e3;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#1f66b6;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#1f66b6;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#2780e3;border-color:#2780e3}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:0.875rem}.badge{display:inline-block;padding:.35em .65em;font-size:0.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:0 solid rgba(0,0,0,0)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{color:#212324;background-color:#d7d8d8;border-color:#c3c4c5}.alert-default .alert-link{color:#1a1c1d}.alert-primary{color:#174d88;background-color:#d4e6f9;border-color:#bed9f7}.alert-primary .alert-link{color:#123e6d}.alert-secondary{color:#212324;background-color:#d7d8d8;border-color:#c3c4c5}.alert-secondary .alert-link{color:#1a1c1d}.alert-success{color:#266d0e;background-color:#d9f0d1;border-color:#c5e9ba}.alert-success .alert-link{color:#1e570b}.alert-info{color:#5c3270;background-color:#ebddf1;border-color:#e0cceb}.alert-info .alert-link{color:#4a285a}.alert-warning{color:#99460e;background-color:#ffe3d1;border-color:#ffd6ba}.alert-warning .alert-link{color:#7a380b}.alert-danger{color:#902;background-color:#ffccd7;border-color:#ffb3c4}.alert-danger .alert-link{color:#7a001b}.alert-light{color:#959596;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#777778}.alert-dark{color:#212324;background-color:#d7d8d8;border-color:#c3c4c5}.alert-dark .alert-link{color:#1a1c1d}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress{display:flex;display:-webkit-flex;height:.5rem;overflow:hidden;font-size:0.75rem;background-color:#e9ecef}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#2780e3;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:.5rem .5rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#373a3c;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#2780e3;border-color:#2780e3}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{color:#212324;background-color:#d7d8d8}.list-group-item-default.list-group-item-action:hover,.list-group-item-default.list-group-item-action:focus{color:#212324;background-color:#c2c2c2}.list-group-item-default.list-group-item-action.active{color:#fff;background-color:#212324;border-color:#212324}.list-group-item-primary{color:#174d88;background-color:#d4e6f9}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#174d88;background-color:#bfcfe0}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#174d88;border-color:#174d88}.list-group-item-secondary{color:#212324;background-color:#d7d8d8}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#212324;background-color:#c2c2c2}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#212324;border-color:#212324}.list-group-item-success{color:#266d0e;background-color:#d9f0d1}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#266d0e;background-color:#c3d8bc}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#266d0e;border-color:#266d0e}.list-group-item-info{color:#5c3270;background-color:#ebddf1}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#5c3270;background-color:#d4c7d9}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#5c3270;border-color:#5c3270}.list-group-item-warning{color:#99460e;background-color:#ffe3d1}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#99460e;background-color:#e6ccbc}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#99460e;border-color:#99460e}.list-group-item-danger{color:#902;background-color:#ffccd7}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#902;background-color:#e6b8c2}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#902;border-color:#902}.list-group-item-light{color:#959596;background-color:#fefefe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#959596;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#959596;border-color:#959596}.list-group-item-dark{color:#212324;background-color:#d7d8d8}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#212324;background-color:#c2c2c2}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#212324;border-color:#212324}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25);opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:0.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-header .btn-close{margin-right:-0.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6}.modal-header .btn-close{padding:.5rem .5rem;margin:-0.5rem -0.5rem -0.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:1rem}.modal-footer{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6}.modal-footer>*{margin:.25rem}@media(min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000}.popover{position:absolute;top:0;left:0 /* rtl:ignore */;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:0.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2)}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#373a3c}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentColor;border-right-color:rgba(0,0,0,0);border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-0.5rem;margin-right:-0.5rem;margin-bottom:-0.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-default{color:#373a3c}.link-default:hover,.link-default:focus{color:#2c2e30}.link-primary{color:#2780e3}.link-primary:hover,.link-primary:focus{color:#1f66b6}.link-secondary{color:#373a3c}.link-secondary:hover,.link-secondary:focus{color:#2c2e30}.link-success{color:#3fb618}.link-success:hover,.link-success:focus{color:#329213}.link-info{color:#9954bb}.link-info:hover,.link-info:focus{color:#7a4396}.link-warning{color:#ff7518}.link-warning:hover,.link-warning:focus{color:#cc5e13}.link-danger{color:#ff0039}.link-danger:hover,.link-danger:focus{color:#cc002e}.link-light{color:#f8f9fa}.link-light:hover,.link-light:focus{color:#f9fafb}.link-dark{color:#373a3c}.link-dark:hover,.link-dark:focus{color:#2c2e30}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-top-0{border-top:0 !important}.border-end{border-right:1px solid #dee2e6 !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:1px solid #dee2e6 !important}.border-start-0{border-left:0 !important}.border-default{border-color:#373a3c !important}.border-primary{border-color:#2780e3 !important}.border-secondary{border-color:#373a3c !important}.border-success{border-color:#3fb618 !important}.border-info{border-color:#9954bb !important}.border-warning{border-color:#ff7518 !important}.border-danger{border-color:#ff0039 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#373a3c !important}.border-white{border-color:#fff !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-light{font-weight:300 !important}.fw-lighter{font-weight:lighter !important}.fw-normal{font-weight:400 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:#6c757d !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:.25rem !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:.2em !important}.rounded-2{border-radius:.25rem !important}.rounded-3{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-end{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-start{border-bottom-left-radius:.25rem !important;border-top-left-radius:.25rem !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.quarto-container{min-height:calc(100vh - 132px)}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}nav[role=doc-toc]{padding-left:.5em}#quarto-content>*{padding-top:14px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-toggler{order:-1;margin-right:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#fdfeff}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fdfeff}@media(max-width: 991.98px){.navbar .quarto-navbar-tools{margin-top:.25em;padding-top:.75em;display:block;color:solid #007ffd 1px;text-align:center;vertical-align:middle;margin-right:auto}}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em}.sidebar-section{margin-top:.2em;padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-secondary-nav .quarto-btn-toggle{color:#595959}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.quarto-secondary-nav-title{margin-top:.3em;color:#595959;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(27,88,157,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#8c8c8c}div.sidebar-item-container{color:#595959}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(27,88,157,.8)}div.sidebar-item-container.disabled{color:rgba(89,89,89,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#1b589d}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#fff}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#fff;border-bottom:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#1f66b6}.toc-actions{display:flex}.toc-actions p{margin-block-start:0;margin-block-end:0}.toc-actions a{text-decoration:none;color:inherit;font-weight:400}.toc-actions a:hover{color:#1f66b6}.toc-actions .action-links{margin-left:4px}.sidebar nav[role=doc-toc] .toc-actions .bi{margin-left:-4px;font-size:.7rem;color:#6c757d}.sidebar nav[role=doc-toc] .toc-actions .bi:before{padding-top:3px}#quarto-margin-sidebar .toc-actions .bi:before{margin-top:.3rem;font-size:.7rem;color:#6c757d;vertical-align:top}.sidebar nav[role=doc-toc] .toc-actions>div:first-of-type{margin-top:-3px}#quarto-margin-sidebar .toc-actions p,.sidebar nav[role=doc-toc] .toc-actions p{font-size:.875rem}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions :first-child{margin-left:auto}.nav-footer .toc-actions :last-child{margin-right:auto}.nav-footer .toc-actions .action-links{display:flex}.nav-footer .toc-actions .action-links p{padding-right:1.5em}.nav-footer .toc-actions .action-links p:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:64px}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#757575}.nav-footer a{color:#757575}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}.nav-footer-left{flex:1 1 0px;text-align:left}.nav-footer-right{flex:1 1 0px;text-align:right}.nav-footer-center{flex:1 1 0px;min-height:3em;text-align:center}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#fdfeff;border-radius:3px}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#595959;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#fdfeff;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#fdfeff;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;color:#373a3c;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#373a3c;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#373a3c;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#373a3c;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#373a3c;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#373a3c;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#373a3c;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#373a3c;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #ced4da 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#f2f2f2;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:#4b95e8}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#373a3c}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#e5effc}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#373a3c}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#ced4da;color:#373a3c}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:44px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #ced4da}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#fdfeff}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#595959}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(255,255,255,.65);width:90%;bottom:0;box-shadow:rgba(206,212,218,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #ced4da;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#373a3c;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(55,58,60,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#373a3c;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:#adb5bd;flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post a{color:#373a3c;display:flex;flex-direction:column;text-decoration:none}div.quarto-post a div.description{flex-shrink:0}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:var(--bs-font-sans-serif);flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#686d71;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#2780e3}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#686d71;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#2780e3}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#686d71;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#2780e3}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#686d71;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#2780e3}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#686d71;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#2780e3}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#373a3c;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#373a3c}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:inline-block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,.table{caption-side:top;margin-bottom:1.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-fg{color:#282c36}.ansi-black-intense-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-fg{color:#b22b31}.ansi-red-intense-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-fg{color:#007427}.ansi-green-intense-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-fg{color:#b27d12}.ansi-yellow-intense-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-fg{color:#0065ca}.ansi-blue-intense-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-fg{color:#a03196}.ansi-magenta-intense-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-fg{color:#258f8f}.ansi-cyan-intense-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-fg{color:#a1a6b2}.ansi-white-intense-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #373a3c;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:absolute;right:.5em;left:inherit;background-color:rgba(0,0,0,0)}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #373a3c;--mermaid-node-fg-color: #373a3c;--mermaid-fg-color: #373a3c;--mermaid-fg-color--lighter: #4f5457;--mermaid-fg-color--lightest: #686d71;--mermaid-font-family: Source Sans Pro, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #2780e3;--mermaid-node-bg-color: rgba(39, 128, 227, 0.1);--mermaid-node-fg-color: #373a3c}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button:focus{outline:none}.code-copy-button-tooltip{font-size:.75em}pre.sourceCode:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}pre.sourceCode:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}pre.sourceCode:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 850px - 3em )) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(50px, 100px) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc( 1250px - 3em )) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 1000px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 800px - 3em )) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc( 750px - 3em )) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#f8f9fa;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}.zindex-content{z-index:998;transform:translate3d(0, 0, 0)}.zindex-modal{z-index:1055;transform:translate3d(0, 0, 0)}.zindex-over-content{z-index:999;transform:translate3d(0, 0, 0)}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside,.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside,.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;transform:translate3d(0, 0, 0)}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{opacity:.9;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:#747a7f}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,caption,.figure-caption{font-size:.9rem}.panel-caption,.figure-caption,figcaption{color:#747a7f}.table-caption,caption{color:#373a3c}.quarto-layout-cell[data-ref-parent] caption{color:#747a7f}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:#747a7f;font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#dee2e6 1px solid;border-right:#dee2e6 1px solid;border-bottom:#dee2e6 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:1em}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(233,236,239,.65);border:1px solid rgba(233,236,239,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}.callout pre.sourceCode{padding-left:0}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:#747a7f}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#f7f7f7;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.toc-left>*,.sidebar.margin-sidebar>*{padding-top:.5em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#2780e3}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.sidebar .quarto-alternate-formats a,.sidebar .quarto-alternate-notebooks a{text-decoration:none}.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#2780e3}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem;font-weight:400;margin-bottom:.5rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2{margin-top:1rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #e9ecef;padding-left:.6rem}.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul,.sidebar nav[role=doc-toc] ul{padding-left:0;list-style:none;font-size:.875rem;font-weight:300}.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #2780e3;color:#2780e3 !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#2780e3 !important}kbd,.kbd{color:#373a3c;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}div.hanging-indent{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.table a{word-break:break-word}.table>thead{border-top-width:1px;border-top-color:#dee2e6;border-bottom:1px solid #b6babc}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout.callout-titled .callout-body{margin-top:.2em}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default div.callout-body>:first-child{margin-top:.5em}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){margin-bottom:.5rem}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#2780e3}div.callout-note.callout-style-default>.callout-header{background-color:#e9f2fc}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#3fb618}div.callout-tip.callout-style-default>.callout-header{background-color:#ecf8e8}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#ff7518}div.callout-warning.callout-style-default>.callout-header{background-color:#fff1e8}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#f0ad4e}div.callout-caution.callout-style-default>.callout-header{background-color:#fef7ed}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#ff0039}div.callout-important.callout-style-default>.callout-header{background-color:#ffe6eb}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:#fafafa}#quarto-content .quarto-sidebar-toggle-title{color:#373a3c}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{color:#cbcccc;background-color:#373a3c;border-color:#373a3c}.btn.btn-quarto:hover,div.cell-output-display .btn-quarto:hover{color:#cbcccc;background-color:#555859;border-color:#4b4e50}.btn-check:focus+.btn.btn-quarto,.btn.btn-quarto:focus,.btn-check:focus+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:focus{color:#cbcccc;background-color:#555859;border-color:#4b4e50;box-shadow:0 0 0 .25rem rgba(77,80,82,.5)}.btn-check:checked+.btn.btn-quarto,.btn-check:active+.btn.btn-quarto,.btn.btn-quarto:active,.btn.btn-quarto.active,.show>.btn.btn-quarto.dropdown-toggle,.btn-check:checked+div.cell-output-display .btn-quarto,.btn-check:active+div.cell-output-display .btn-quarto,div.cell-output-display .btn-quarto:active,div.cell-output-display .btn-quarto.active,.show>div.cell-output-display .btn-quarto.dropdown-toggle{color:#fff;background-color:#5f6163;border-color:#4b4e50}.btn-check:checked+.btn.btn-quarto:focus,.btn-check:active+.btn.btn-quarto:focus,.btn.btn-quarto:active:focus,.btn.btn-quarto.active:focus,.show>.btn.btn-quarto.dropdown-toggle:focus,.btn-check:checked+div.cell-output-display .btn-quarto:focus,.btn-check:active+div.cell-output-display .btn-quarto:focus,div.cell-output-display .btn-quarto:active:focus,div.cell-output-display .btn-quarto.active:focus,.show>div.cell-output-display .btn-quarto.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(77,80,82,.5)}.btn.btn-quarto:disabled,.btn.btn-quarto.disabled,div.cell-output-display .btn-quarto:disabled,div.cell-output-display .btn-quarto.disabled{color:#fff;background-color:#373a3c;border-color:#373a3c}nav.quarto-secondary-nav.color-navbar{background-color:#2780e3;color:#fdfeff}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#fdfeff}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:0}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(233,236,239,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:var(--bs-font-monospace);color:#4f5457;border:solid #4f5457 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#e9ecef;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:var(--bs-font-monospace);color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;transform:translate3d(0, 0, 0)}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#f8f9fa;z-index:998;transform:translate3d(0, 0, 0);margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table>thead{border-top-width:0}.table>:not(caption)>*:not(:last-child)>*{border-bottom-color:#ebeced;border-bottom-style:solid;border-bottom-width:1px}.table>:not(:first-child){border-top:1px solid #b6babc;border-bottom:1px solid inherit}.table tbody{border-bottom-color:#b6babc}a.external:after{display:inline-block;height:.75rem;width:.75rem;margin-bottom:.15em;margin-left:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file,.code-with-filename .code-with-filename-file pre{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file,.quarto-dark .code-with-filename .code-with-filename-file pre{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#fdfeff;background:#2780e3}.quarto-title-banner .code-tools-button{color:#97cbff}.quarto-title-banner .code-tools-button:hover{color:#fdfeff}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr)}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-5px}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents a{color:#373a3c}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.7em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .description .abstract-title,#title-block-header.quarto-title-block.default .abstract .abstract-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:1fr 1fr}.quarto-title-tools-only{display:flex;justify-content:right}body{-webkit-font-smoothing:antialiased}.badge.bg-light{color:#373a3c}.progress .progress-bar{font-size:8px;line-height:8px}/*# sourceMappingURL=9161419e6f82ea4435380a70856fa72b.css.map */ diff --git a/site_libs/bootstrap/bootstrap.min.js b/site_libs/bootstrap/bootstrap.min.js new file mode 100644 index 0000000..cc0a255 --- /dev/null +++ b/site_libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=(t,e,i)=>{Object.keys(i).forEach((n=>{const s=i[n],r=e[n],a=r&&o(r)?"element":null==(l=r)?`${l}`:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(s).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}))},l=t=>!(!o(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),c=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},d=()=>{},u=t=>{t.offsetHeight},f=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},p=[],m=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=f();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(p.length||document.addEventListener("DOMContentLoaded",(()=>{p.forEach((t=>t()))})),p.push(e)):e()},_=t=>{"function"==typeof t&&t()},b=(e,i,n=!0)=>{if(!n)return void _(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),_(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},v=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},y=/[^.]*(?=\..*)\.|.*/,w=/\..*/,E=/::\d+$/,A={};let T=1;const O={mouseenter:"mouseover",mouseleave:"mouseout"},C=/^(mouseenter|mouseleave)/i,k=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function L(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function x(t){const e=L(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function D(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;sfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=S(e,i,n),l=x(t),c=l[a]||(l[a]={}),h=D(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=L(r,e.replace(y,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&j.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&j.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function I(t,e,i,n,s){const o=D(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function P(t){return t=t.replace(w,""),O[t]||t}const j={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=S(e,i,n),a=r!==e,l=x(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void I(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];I(t,e,i,n.originalHandler,n.delegationSelector)}}))}(t,l,i,e.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(E,"");if(!a||e.includes(n)){const e=h[i];I(t,l,r,e.originalHandler,e.delegationSelector)}}))},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=f(),s=P(e),o=e!==s,r=k.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((t=>{Object.defineProperty(d,t,{get:()=>i[t]})})),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};class B{constructor(t){(t=r(t))&&(this._element=t,H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),j.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((t=>{this[t]=null}))}_queueCallback(t,e,i=!0){b(t,e,i)}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.3"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;j.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),c(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class W extends B{static get NAME(){return"alert"}close(){if(j.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),j.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(W,"close"),g(W);const $='[data-bs-toggle="button"]';class z extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function q(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function F(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}j.on(document,"click.bs.button.data-api",$,(t=>{t.preventDefault();const e=t.target.closest($);z.getOrCreateInstance(e).toggle()})),g(z);const U={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${F(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${F(e)}`)},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter((t=>t.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=q(t.dataset[i])})),e},getDataAttribute:(t,e)=>q(t.getAttribute(`data-bs-${F(e)}`)),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},V={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(", ");return this.find(e,t).filter((t=>!c(t)&&l(t)))}},K="carousel",X={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},Y={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Q="next",G="prev",Z="left",J="right",tt={ArrowLeft:J,ArrowRight:Z},et="slid.bs.carousel",it="active",nt=".active.carousel-item";class st extends B{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=V.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return X}static get NAME(){return K}next(){this._slide(Q)}nextWhenVisible(){!document.hidden&&l(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),V.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(s(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=V.findOne(nt,this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void j.one(this._element,et,(()=>this.to(t)));if(e===t)return this.pause(),void this.cycle();const i=t>e?Q:G;this._slide(i,this._items[t])}_getConfig(t){return t={...X,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(K,t,Y),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&j.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(j.on(this._element,"mouseenter.bs.carousel",(t=>this.pause(t))),j.on(this._element,"mouseleave.bs.carousel",(t=>this.cycle(t)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>this._pointerEvent&&("pen"===t.pointerType||"touch"===t.pointerType),e=e=>{t(e)?this.touchStartX=e.clientX:this._pointerEvent||(this.touchStartX=e.touches[0].clientX)},i=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},n=e=>{t(e)&&(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((t=>this.cycle(t)),500+this._config.interval))};V.find(".carousel-item img",this._element).forEach((t=>{j.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()))})),this._pointerEvent?(j.on(this._element,"pointerdown.bs.carousel",(t=>e(t))),j.on(this._element,"pointerup.bs.carousel",(t=>n(t))),this._element.classList.add("pointer-event")):(j.on(this._element,"touchstart.bs.carousel",(t=>e(t))),j.on(this._element,"touchmove.bs.carousel",(t=>i(t))),j.on(this._element,"touchend.bs.carousel",(t=>n(t))))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?V.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===Q;return v(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(V.findOne(nt,this._element));return j.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=V.findOne(".active",this._indicatorsElement);e.classList.remove(it),e.removeAttribute("aria-current");const i=V.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{j.trigger(this._element,et,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),u(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add(it),n.classList.remove(it,h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove(it),o.classList.add(it),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?m()?t===Z?G:Q:t===Z?Q:G:t}_orderToDirection(t){return[Q,G].includes(t)?m()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const i=st.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){st.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=n(this);if(!e||!e.classList.contains("carousel"))return;const i={...U.getDataAttributes(e),...U.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(i.interval=!1),st.carouselInterface(e,i),s&&st.getInstance(e).to(s),t.preventDefault()}}j.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",st.dataApiClickHandler),j.on(window,"load.bs.carousel.data-api",(()=>{const t=V.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element));null!==s&&o.length&&(this._selector=s,this._triggerArray.push(e))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return rt}static get NAME(){return ot}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=V.find(ut,this._config.parent);e=V.find(".collapse.show, .collapse.collapsing",this._config.parent).filter((e=>!t.includes(e)))}const i=V.findOne(this._selector);if(e.length){const n=e.find((t=>i!==t));if(t=n?pt.getInstance(n):null,t&&t._isTransitioning)return}if(j.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach((e=>{i!==e&&pt.getOrCreateInstance(e,{toggle:!1}).hide(),t||H.set(e,"bs.collapse",null)}));const n=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[n]="",j.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(j.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,u(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);const e=this._triggerArray.length;for(let t=0;t{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),j.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_getConfig(t){return(t={...rt,...U.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=r(t.parent),a(ot,t,at),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=V.find(ut,this._config.parent);V.find(ft,this._config.parent).filter((e=>!t.includes(e))).forEach((t=>{const e=n(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}))}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach((t=>{e?t.classList.remove(dt):t.classList.add(dt),t.setAttribute("aria-expanded",e)}))}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}j.on(document,"click.bs.collapse.data-api",ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this);V.find(e).forEach((t=>{pt.getOrCreateInstance(t,{toggle:!1}).toggle()}))})),g(pt);var mt="top",gt="bottom",_t="right",bt="left",vt="auto",yt=[mt,gt,_t,bt],wt="start",Et="end",At="clippingParents",Tt="viewport",Ot="popper",Ct="reference",kt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+Et])}),[]),Lt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+Et])}),[]),xt="beforeRead",Dt="read",St="afterRead",Nt="beforeMain",It="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",Bt=[xt,Dt,St,Nt,It,Pt,jt,Mt,Ht];function Rt(t){return t?(t.nodeName||"").toLowerCase():null}function Wt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function $t(t){return t instanceof Wt(t).Element||t instanceof Element}function zt(t){return t instanceof Wt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Wt(t).ShadowRoot||t instanceof ShadowRoot)}const Ft={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Rt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Rt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Ut(t){return t.split("-")[0]}function Vt(t,e){var i=t.getBoundingClientRect();return{width:i.width/1,height:i.height/1,top:i.top/1,right:i.right/1,bottom:i.bottom/1,left:i.left/1,x:i.left/1,y:i.top/1}}function Kt(t){var e=Vt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Xt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Yt(t){return Wt(t).getComputedStyle(t)}function Qt(t){return["table","td","th"].indexOf(Rt(t))>=0}function Gt(t){return(($t(t)?t.ownerDocument:t.document)||window.document).documentElement}function Zt(t){return"html"===Rt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||Gt(t)}function Jt(t){return zt(t)&&"fixed"!==Yt(t).position?t.offsetParent:null}function te(t){for(var e=Wt(t),i=Jt(t);i&&Qt(i)&&"static"===Yt(i).position;)i=Jt(i);return i&&("html"===Rt(i)||"body"===Rt(i)&&"static"===Yt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&zt(t)&&"fixed"===Yt(t).position)return null;for(var i=Zt(t);zt(i)&&["html","body"].indexOf(Rt(i))<0;){var n=Yt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function ee(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var ie=Math.max,ne=Math.min,se=Math.round;function oe(t,e,i){return ie(t,ne(e,i))}function re(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ae(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const le={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Ut(i.placement),l=ee(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return re("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ae(t,yt))}(s.padding,i),d=Kt(o),u="y"===l?mt:bt,f="y"===l?gt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=te(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=oe(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Xt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ce(t){return t.split("-")[1]}var he={top:"auto",right:"auto",bottom:"auto",left:"auto"};function de(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:se(se(e*n)/n)||0,y:se(se(i*n)/n)||0}}(r):"function"==typeof h?h(r):r,u=d.x,f=void 0===u?0:u,p=d.y,m=void 0===p?0:p,g=r.hasOwnProperty("x"),_=r.hasOwnProperty("y"),b=bt,v=mt,y=window;if(c){var w=te(i),E="clientHeight",A="clientWidth";w===Wt(i)&&"static"!==Yt(w=Gt(i)).position&&"absolute"===a&&(E="scrollHeight",A="scrollWidth"),w=w,s!==mt&&(s!==bt&&s!==_t||o!==Et)||(v=gt,m-=w[E]-n.height,m*=l?1:-1),s!==bt&&(s!==mt&&s!==gt||o!==Et)||(b=_t,f-=w[A]-n.width,f*=l?1:-1)}var T,O=Object.assign({position:a},c&&he);return l?Object.assign({},O,((T={})[v]=_?"0":"",T[b]=g?"0":"",T.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",T)):Object.assign({},O,((e={})[v]=_?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}const ue={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Ut(e.placement),variation:ce(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,de(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,de(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var fe={passive:!0};const pe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Wt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,fe)})),a&&l.addEventListener("resize",i.update,fe),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,fe)})),a&&l.removeEventListener("resize",i.update,fe)}},data:{}};var me={left:"right",right:"left",bottom:"top",top:"bottom"};function ge(t){return t.replace(/left|right|bottom|top/g,(function(t){return me[t]}))}var _e={start:"end",end:"start"};function be(t){return t.replace(/start|end/g,(function(t){return _e[t]}))}function ve(t){var e=Wt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ye(t){return Vt(Gt(t)).left+ve(t).scrollLeft}function we(t){var e=Yt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ee(t){return["html","body","#document"].indexOf(Rt(t))>=0?t.ownerDocument.body:zt(t)&&we(t)?t:Ee(Zt(t))}function Ae(t,e){var i;void 0===e&&(e=[]);var n=Ee(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Wt(n),r=s?[o].concat(o.visualViewport||[],we(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ae(Zt(r)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Oe(t,e){return e===Tt?Te(function(t){var e=Wt(t),i=Gt(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+ye(t),y:a}}(t)):zt(e)?function(t){var e=Vt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Te(function(t){var e,i=Gt(t),n=ve(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ie(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ie(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ye(t),l=-n.scrollTop;return"rtl"===Yt(s||i).direction&&(a+=ie(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Gt(t)))}function Ce(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Ut(s):null,r=s?ce(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case mt:e={x:a,y:i.y-n.height};break;case gt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?ee(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Et:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ke(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?At:o,a=i.rootBoundary,l=void 0===a?Tt:a,c=i.elementContext,h=void 0===c?Ot:c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=re("number"!=typeof p?p:ae(p,yt)),g=h===Ot?Ct:Ot,_=t.rects.popper,b=t.elements[u?g:h],v=function(t,e,i){var n="clippingParents"===e?function(t){var e=Ae(Zt(t)),i=["absolute","fixed"].indexOf(Yt(t).position)>=0&&zt(t)?te(t):t;return $t(i)?e.filter((function(t){return $t(t)&&Xt(t,i)&&"body"!==Rt(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Oe(t,i);return e.top=ie(n.top,e.top),e.right=ne(n.right,e.right),e.bottom=ne(n.bottom,e.bottom),e.left=ie(n.left,e.left),e}),Oe(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}($t(b)?b:b.contextElement||Gt(t.elements.popper),r,l),y=Vt(t.elements.reference),w=Ce({reference:y,element:_,strategy:"absolute",placement:s}),E=Te(Object.assign({},_,w)),A=h===Ot?E:y,T={top:v.top-A.top+m.top,bottom:A.bottom-v.bottom+m.bottom,left:v.left-A.left+m.left,right:A.right-v.right+m.right},O=t.modifiersData.offset;if(h===Ot&&O){var C=O[s];Object.keys(T).forEach((function(t){var e=[_t,gt].indexOf(t)>=0?1:-1,i=[mt,gt].indexOf(t)>=0?"y":"x";T[t]+=C[i]*e}))}return T}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?Lt:l,h=ce(n),d=h?a?kt:kt.filter((function(t){return ce(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ke(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Ut(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const xe={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=Ut(g),b=l||(_!==g&&p?function(t){if(Ut(t)===vt)return[];var e=ge(t);return[be(t),e,be(e)]}(g):[ge(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(Ut(i)===vt?Le(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O=0,D=x?"width":"height",S=ke(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?_t:bt:L?gt:mt;y[D]>w[D]&&(N=ge(N));var I=ge(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function De(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Se(t){return[mt,_t,gt,bt].some((function(e){return t[e]>=0}))}const Ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ke(e,{elementContext:"reference"}),a=ke(e,{altBoundary:!0}),l=De(r,n),c=De(a,s,o),h=Se(l),d=Se(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Ie={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=Lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Ut(t),s=[bt,mt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Pe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Ce({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},je={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ke(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Ut(e.placement),b=ce(e.placement),v=!b,y=ee(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?mt:bt,L="y"===y?gt:_t,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P=b===wt?A[x]:T[x],j=b===wt?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?Kt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],$=oe(0,A[x],H[x]),z=v?A[x]/2-I-$-R-O:P-$-R-O,q=v?-A[x]/2+I+$+W+O:j+$+W+O,F=e.elements.arrow&&te(e.elements.arrow),U=F?"y"===y?F.clientTop||0:F.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+z-V-U,X=E[y]+q-V;if(o){var Y=oe(f?ne(S,K):S,D,f?ie(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?mt:bt,G="x"===y?gt:_t,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=oe(f?ne(J,K):J,Z,f?ie(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function Me(t,e,i){void 0===i&&(i=!1);var n=zt(e);zt(e)&&function(t){var e=t.getBoundingClientRect();e.width,t.offsetWidth,e.height,t.offsetHeight}(e);var s,o,r=Gt(e),a=Vt(t),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(n||!n&&!i)&&(("body"!==Rt(e)||we(r))&&(l=(s=e)!==Wt(s)&&zt(s)?{scrollLeft:(o=s).scrollLeft,scrollTop:o.scrollTop}:ve(s)),zt(e)?((c=Vt(e)).x+=e.clientLeft,c.y+=e.clientTop):r&&(c.x=ye(r))),{x:a.left+l.scrollLeft-c.x,y:a.top+l.scrollTop-c.y,width:a.width,height:a.height}}function He(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Re(){for(var t=arguments.length,e=new Array(t),i=0;ij.on(t,"mouseover",d))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),j.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(c(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){j.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),U.removeDataAttribute(this._menu,"popper"),j.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...U.getDataAttributes(this._element),...t},a(Ue,t,this.constructor.DefaultType),"object"==typeof t.reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ue.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(t){if(void 0===Fe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:o(this._config.reference)?e=r(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find((t=>"applyStyles"===t.name&&!1===t.enabled));this._popper=qe(e,this._menu,i),n&&U.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains(Je)}_getMenuElement(){return V.next(this._element,ei)[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=V.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(l);i.length&&v(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=V.find(ti);for(let i=0,n=e.length;ie+t)),this._setElementAttributes(di,"paddingRight",(e=>e+t)),this._setElementAttributes(ui,"marginRight",(e=>e-t))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(di,"paddingRight"),this._resetElementAttributes(ui,"marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&U.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=U.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(U.removeDataAttribute(t,e),t.style[e]=i)}))}_applyManipulationCallback(t,e){o(t)?e(t):V.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const pi={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},mi={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},gi="show",_i="mousedown.bs.backdrop";class bi{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&u(this._getElement()),this._getElement().classList.add(gi),this._emulateAnimation((()=>{_(t)}))):_(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove(gi),this._emulateAnimation((()=>{this.dispose(),_(t)}))):_(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...pi,..."object"==typeof t?t:{}}).rootElement=r(t.rootElement),a("backdrop",t,mi),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),j.on(this._getElement(),_i,(()=>{_(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(j.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){b(t,this._getElement(),this._config.isAnimated)}}const vi={trapElement:null,autofocus:!0},yi={trapElement:"element",autofocus:"boolean"},wi=".bs.focustrap",Ei="backward";class Ai{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),j.off(document,wi),j.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),j.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,j.off(document,wi))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=V.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ei?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ei:"forward")}_getConfig(t){return t={...vi,..."object"==typeof t?t:{}},a("focustrap",t,yi),t}}const Ti="modal",Oi="Escape",Ci={backdrop:!0,keyboard:!0,focus:!0},ki={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},Li="hidden.bs.modal",xi="show.bs.modal",Di="resize.bs.modal",Si="click.dismiss.bs.modal",Ni="keydown.dismiss.bs.modal",Ii="mousedown.dismiss.bs.modal",Pi="modal-open",ji="show",Mi="modal-static";class Hi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=V.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new fi}static get Default(){return Ci}static get NAME(){return Ti}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||j.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Pi),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),j.on(this._dialog,Ii,(()=>{j.one(this._element,"mouseup.dismiss.bs.modal",(t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(t))))}hide(){if(!this._isShown||this._isTransitioning)return;if(j.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(ji),j.off(this._element,Si),j.off(this._dialog,Ii),this._queueCallback((()=>this._hideModal()),this._element,t)}dispose(){[window,this._dialog].forEach((t=>j.off(t,".bs.modal"))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_getConfig(t){return t={...Ci,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Ti,t,ki),t}_showElement(t){const e=this._isAnimated(),i=V.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add(ji),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,j.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,e)}_setEscapeEvent(){this._isShown?j.on(this._element,Ni,(t=>{this._config.keyboard&&t.key===Oi?(t.preventDefault(),this.hide()):this._config.keyboard||t.key!==Oi||this._triggerBackdropTransition()})):j.off(this._element,Ni)}_setResizeEvent(){this._isShown?j.on(window,Di,(()=>this._adjustDialog())):j.off(window,Di)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Pi),this._resetAdjustments(),this._scrollBar.reset(),j.trigger(this._element,Li)}))}_showBackdrop(t){j.on(this._element,Si,(t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(j.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains(Mi)||(n||(i.overflowY="hidden"),t.add(Mi),this._queueCallback((()=>{t.remove(Mi),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!m()||i&&!t&&m())&&(this._element.style.paddingLeft=`${e}px`),(i&&!t&&!m()||!i&&t&&m())&&(this._element.style.paddingRight=`${e}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}j.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),j.one(e,xi,(t=>{t.defaultPrevented||j.one(e,Li,(()=>{l(this)&&this.focus()}))}));const i=V.findOne(".modal.show");i&&Hi.getInstance(i).hide(),Hi.getOrCreateInstance(e).toggle(this)})),R(Hi),g(Hi);const Bi="offcanvas",Ri={backdrop:!0,keyboard:!0,scroll:!1},Wi={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},$i="show",zi=".offcanvas.show",qi="hidden.bs.offcanvas";class Fi extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return Bi}static get Default(){return Ri}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||j.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new fi).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($i),this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),j.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(j.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove($i),this._backdrop.hide(),this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new fi).reset(),j.trigger(this._element,qi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...Ri,...U.getDataAttributes(this._element),..."object"==typeof t?t:{}},a(Bi,t,Wi),t}_initializeBackDrop(){return new bi({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Ai({trapElement:this._element})}_addEventListeners(){j.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}))}static jQueryInterface(t){return this.each((function(){const e=Fi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}j.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this))return;j.one(e,qi,(()=>{l(this)&&this.focus()}));const i=V.findOne(zi);i&&i!==e&&Fi.getInstance(i).hide(),Fi.getOrCreateInstance(e).toggle(this)})),j.on(window,"load.bs.offcanvas.data-api",(()=>V.find(zi).forEach((t=>Fi.getOrCreateInstance(t).show())))),R(Fi),g(Fi);const Ui=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Vi=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Ki=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xi=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Ui.has(i)||Boolean(Vi.test(t.nodeValue)||Ki.test(t.nodeValue));const n=e.filter((t=>t instanceof RegExp));for(let t=0,e=n.length;t{Xi(t,r)||i.removeAttribute(t.nodeName)}))}return n.body.innerHTML}const Qi="tooltip",Gi=new Set(["sanitize","allowList","sanitizeFn"]),Zi={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ji={AUTO:"auto",TOP:"top",RIGHT:m()?"left":"right",BOTTOM:"bottom",LEFT:m()?"right":"left"},tn={animation:!0,template:'

    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},en={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},nn="fade",sn="show",on="show",rn="out",an=".tooltip-inner",ln=".modal",cn="hide.bs.modal",hn="hover",dn="focus";class un extends B{constructor(t,e){if(void 0===Fe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return tn}static get NAME(){return Qi}static get Event(){return en}static get DefaultType(){return Zi}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains(sn))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),j.off(this._element.closest(ln),cn,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=j.trigger(this._element,this.constructor.Event.SHOW),e=h(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(an).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add(nn);const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;H.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),j.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=qe(this._element,n,this._getPopperConfig(r)),n.classList.add(sn);const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>{j.on(t,"mouseover",d)}));const c=this.tip.classList.contains(nn);this._queueCallback((()=>{const t=this._hoverState;this._hoverState=null,j.trigger(this._element,this.constructor.Event.SHOWN),t===rn&&this._leave(null,this)}),this.tip,c)}hide(){if(!this._popper)return;const t=this.getTipElement();if(j.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(sn),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((t=>j.off(t,"mouseover",d))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains(nn);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==on&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),j.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())}),this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove(nn,sn),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),an)}_sanitizeAndSetContent(t,e,i){const n=V.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return o(e)?(e=r(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Yi(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return Ji[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((t=>{if("click"===t)j.on(this._element,this.constructor.Event.CLICK,this._config.selector,(t=>this.toggle(t)));else if("manual"!==t){const e=t===hn?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=t===hn?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;j.on(this._element,e,this._config.selector,(t=>this._enter(t))),j.on(this._element,i,this._config.selector,(t=>this._leave(t)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},j.on(this._element.closest(ln),cn,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?dn:hn]=!0),e.getTipElement().classList.contains(sn)||e._hoverState===on?e._hoverState=on:(clearTimeout(e._timeout),e._hoverState=on,e._config.delay&&e._config.delay.show?e._timeout=setTimeout((()=>{e._hoverState===on&&e.show()}),e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?dn:hn]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=rn,e._config.delay&&e._config.delay.hide?e._timeout=setTimeout((()=>{e._hoverState===rn&&e.hide()}),e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=U.getDataAttributes(this._element);return Object.keys(e).forEach((t=>{Gi.has(t)&&delete e[t]})),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a(Qi,t,this.constructor.DefaultType),t.sanitize&&(t.template=Yi(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map((t=>t.trim())).forEach((e=>t.classList.remove(e)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn={...un.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},pn={...un.DefaultType,content:"(string|element|function)"},mn={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class gn extends un{static get Default(){return fn}static get NAME(){return"popover"}static get Event(){return mn}static get DefaultType(){return pn}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=gn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(gn);const _n="scrollspy",bn={offset:10,method:"auto",target:""},vn={offset:"number",method:"string",target:"(string|element)"},yn="active",wn=".nav-link, .list-group-item, .dropdown-item",En="position";class An extends B{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,j.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return bn}static get NAME(){return _n}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":En,e="auto"===this._config.method?t:this._config.method,n=e===En?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),V.find(wn,this._config.target).map((t=>{const s=i(t),o=s?V.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[U[e](o).top+n,s]}return null})).filter((t=>t)).sort(((t,e)=>t[0]-e[0])).forEach((t=>{this._offsets.push(t[0]),this._targets.push(t[1])}))}dispose(){j.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...bn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=r(t.target)||document.documentElement,a(_n,t,vn),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`)),i=V.findOne(e.join(","),this._config.target);i.classList.add(yn),i.classList.contains("dropdown-item")?V.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(yn):V.parents(i,".nav, .list-group").forEach((t=>{V.prev(t,".nav-link, .list-group-item").forEach((t=>t.classList.add(yn))),V.prev(t,".nav-item").forEach((t=>{V.children(t,".nav-link").forEach((t=>t.classList.add(yn)))}))})),j.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){V.find(wn,this._config.target).filter((t=>t.classList.contains(yn))).forEach((t=>t.classList.remove(yn)))}static jQueryInterface(t){return this.each((function(){const e=An.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(window,"load.bs.scrollspy.data-api",(()=>{V.find('[data-bs-spy="scroll"]').forEach((t=>new An(t)))})),g(An);const Tn="active",On="fade",Cn="show",kn=".active",Ln=":scope > li > .active";class xn extends B{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Tn))return;let t;const e=n(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?Ln:kn;t=V.find(e,i),t=t[t.length-1]}const s=t?j.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(j.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,i);const o=()=>{j.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),j.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V.children(e,kn):V.find(Ln,e))[0],s=i&&n&&n.classList.contains(On),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove(Cn),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove(Tn);const t=V.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove(Tn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add(Tn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains(On)&&t.classList.add(Cn);let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&V.find(".dropdown-toggle",e).forEach((t=>t.classList.add(Tn))),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=xn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}j.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),c(this)||xn.getOrCreateInstance(this).show()})),g(xn);const Dn="toast",Sn="hide",Nn="show",In="showing",Pn={animation:"boolean",autohide:"boolean",delay:"number"},jn={animation:!0,autohide:!0,delay:5e3};class Mn extends B{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Pn}static get Default(){return jn}static get NAME(){return Dn}show(){j.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Sn),u(this._element),this._element.classList.add(Nn),this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.remove(In),j.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this._element.classList.contains(Nn)&&(j.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(In),this._queueCallback((()=>{this._element.classList.add(Sn),this._element.classList.remove(In),this._element.classList.remove(Nn),j.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains(Nn)&&this._element.classList.remove(Nn),super.dispose()}_getConfig(t){return t={...jn,...U.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},a(Dn,t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){j.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),j.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),j.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Mn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(Mn),g(Mn),{Alert:W,Button:z,Carousel:st,Collapse:pt,Dropdown:hi,Modal:Hi,Offcanvas:Fi,Popover:gn,ScrollSpy:An,Tab:xn,Toast:Mn,Tooltip:un}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/site_libs/clipboard/clipboard.min.js b/site_libs/clipboard/clipboard.min.js new file mode 100644 index 0000000..1103f81 --- /dev/null +++ b/site_libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",u.sheet.cssRules.length),u.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",u.sheet.cssRules.length),u.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',u.sheet.cssRules.length)),u=document.querySelectorAll("[id]"),t=[].map.call(u,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/site_libs/quarto-html/popper.min.js b/site_libs/quarto-html/popper.min.js new file mode 100644 index 0000000..2269d66 --- /dev/null +++ b/site_libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.4 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,f=e.offsetWidth;f>0&&(o=s(n.width)/f||1),a>0&&(i=s(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function c(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function p(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function l(e){return f(u(e)).left+c(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function h(e){var t=d(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function m(e,n,o){void 0===o&&(o=!1);var i,a,d=r(n),m=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),v=u(n),g=f(e,m),y={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(d||!d&&!o)&&(("body"!==p(n)||h(v))&&(y=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:c(i)),r(n)?((b=f(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):v&&(b.x=l(v))),{x:g.left+y.scrollLeft-b.x,y:g.top+y.scrollTop-b.y,width:g.width,height:g.height}}function v(e){var t=f(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function g(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||u(e)}function y(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:y(g(e))}function b(e,n){var r;void 0===n&&(n=[]);var o=y(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],h(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(b(g(s)))}function x(e){return["table","td","th"].indexOf(p(e))>=0}function w(e){return r(e)&&"fixed"!==d(e).position?e.offsetParent:null}function O(e){for(var n=t(e),i=w(e);i&&x(i)&&"static"===d(i).position;)i=w(i);return i&&("html"===p(i)||"body"===p(i)&&"static"===d(i).position)?n:i||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===d(e).position)return null;var n=g(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(p(n))<0;){var i=d(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var j="top",E="bottom",D="right",A="left",L="auto",P=[j,E,D,A],M="start",k="end",W="viewport",B="popper",H=P.reduce((function(e,t){return e.concat([t+"-"+M,t+"-"+k])}),[]),T=[].concat(P,[L]).reduce((function(e,t){return e.concat([t,t+"-"+M,t+"-"+k])}),[]),R=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function S(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function q(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function N(e,r){return r===W?V(function(e){var n=t(e),r=u(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;return o&&(i=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=o.offsetLeft,f=o.offsetTop)),{width:i,height:a,x:s+l(e),y:f}}(e)):n(r)?function(e){var t=f(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(r):V(function(e){var t,n=u(e),r=c(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+l(e),p=-r.scrollTop;return"rtl"===d(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:p}}(u(e)))}function I(e,t,o){var s="clippingParents"===t?function(e){var t=b(g(e)),o=["absolute","fixed"].indexOf(d(e).position)>=0&&r(e)?O(e):e;return n(o)?t.filter((function(e){return n(e)&&q(e,o)&&"body"!==p(e)})):[]}(e):[].concat(t),f=[].concat(s,[o]),c=f[0],u=f.reduce((function(t,n){var r=N(e,n);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),N(e,c));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function _(e){return e.split("-")[1]}function F(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function U(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?_(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case j:t={x:s,y:n.y-r.height};break;case E:t={x:s,y:n.y+n.height};break;case D:t={x:n.x+n.width,y:f};break;case A:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?F(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case M:t[c]=t[c]-(n[p]/2-r[p]/2);break;case k:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function X(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Y(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.boundary,s=void 0===a?"clippingParents":a,c=r.rootBoundary,p=void 0===c?W:c,l=r.elementContext,d=void 0===l?B:l,h=r.altBoundary,m=void 0!==h&&h,v=r.padding,g=void 0===v?0:v,y=z("number"!=typeof g?g:X(g,P)),b=d===B?"reference":B,x=e.rects.popper,w=e.elements[m?b:d],O=I(n(w)?w:w.contextElement||u(e.elements.popper),s,p),A=f(e.elements.reference),L=U({reference:A,element:x,strategy:"absolute",placement:i}),M=V(Object.assign({},x,L)),k=d===B?M:A,H={top:O.top-k.top+y.top,bottom:k.bottom-O.bottom+y.bottom,left:O.left-k.left+y.left,right:k.right-O.right+y.right},T=e.modifiersData.offset;if(d===B&&T){var R=T[i];Object.keys(H).forEach((function(e){var t=[D,E].indexOf(e)>=0?1:-1,n=[j,E].indexOf(e)>=0?"y":"x";H[e]+=R[n]*t}))}return H}var G={placement:"bottom",modifiers:[],strategy:"absolute"};function J(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[A,D].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return ie[e]}))}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return se[e]}))}function ce(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?T:f,p=_(r),u=p?s?H:H.filter((function(e){return _(e)===p})):P,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=Y(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,g=C(v),y=f||(g===v||!h?[ae(v)]:function(e){if(C(e)===L)return[];var t=ae(e);return[fe(e),t,fe(t)]}(v)),b=[v].concat(y).reduce((function(e,n){return e.concat(C(n)===L?ce(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,P=!0,k=b[0],W=0;W=0,S=R?"width":"height",q=Y(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),V=R?T?D:A:T?E:j;x[S]>w[S]&&(V=ae(V));var N=ae(V),I=[];if(i&&I.push(q[H]<=0),s&&I.push(q[V]<=0,q[N]<=0),I.every((function(e){return e}))){k=B,P=!1;break}O.set(B,I)}if(P)for(var F=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},U=h?3:1;U>0;U--){if("break"===F(U))break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return i(e,a(t,n))}var le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,g=n.tetherOffset,y=void 0===g?0:g,b=Y(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=_(t.placement),L=!w,P=F(x),k="x"===P?"y":"x",W=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,q={x:0,y:0};if(W){if(s){var V,N="y"===P?j:A,I="y"===P?E:D,U="y"===P?"height":"width",z=W[P],X=z+b[N],G=z-b[I],J=m?-H[U]/2:0,K=w===M?B[U]:H[U],Q=w===M?-H[U]:-B[U],Z=t.elements.arrow,$=m&&Z?v(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=ue(0,B[U],$[U]),oe=L?B[U]/2-J-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=L?-B[U]/2+J+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&O(t.elements.arrow),se=ae?"y"===P?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(V=null==S?void 0:S[P])?V:0,ce=z+ie-fe,pe=ue(m?a(X,z+oe-fe-se):X,z,m?i(G,ce):G);W[P]=pe,q[P]=pe-z}if(c){var le,de="x"===P?j:A,he="x"===P?E:D,me=W[k],ve="y"===k?"height":"width",ge=me+b[de],ye=me-b[he],be=-1!==[j,A].indexOf(x),xe=null!=(le=null==S?void 0:S[k])?le:0,we=be?ge:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ye,je=m&&be?function(e,t,n){var r=ue(e,t,n);return r>n?n:r}(we,me,Oe):ue(m?we:ge,me,m?Oe:ye);W[k]=je,q[k]=je-me}t.modifiersData[r]=q}},requiresIfExists:["offset"]};var de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=F(s),c=[A,D].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:X(e,P))}(o.padding,n),u=v(i),l="y"===f?j:A,d="y"===f?E:D,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],g=O(i),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],L=y/2-u[c]/2+b,M=ue(x,L,w),k=f;n.modifiersData[r]=((t={})[k]=M,t.centerOffset=M-L,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&q(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function he(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function me(e){return[j,D,E,A].some((function(t){return e[t]>=0}))}var ve={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=Y(t,{elementContext:"reference"}),s=Y(t,{altBoundary:!0}),f=he(a,r),c=he(s,o,i),p=me(f),u=me(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},ge=K({defaultModifiers:[Z,$,ne,re]}),ye=[Z,$,ne,re,oe,pe,le,de,ve],be=K({defaultModifiers:ye});e.applyStyles=re,e.arrow=de,e.computeStyles=ne,e.createPopper=be,e.createPopperLite=ge,e.defaultModifiers=ye,e.detectOverflow=Y,e.eventListeners=Z,e.flip=pe,e.hide=ve,e.offset=oe,e.popperGenerator=K,e.popperOffsets=$,e.preventOverflow=le,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/site_libs/quarto-html/quarto-syntax-highlighting.css b/site_libs/quarto-html/quarto-syntax-highlighting.css new file mode 100644 index 0000000..d9fd98f --- /dev/null +++ b/site_libs/quarto-html/quarto-syntax-highlighting.css @@ -0,0 +1,203 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-ot-color: #003B4F; + --quarto-hl-at-color: #657422; + --quarto-hl-ss-color: #20794D; + --quarto-hl-an-color: #5E5E5E; + --quarto-hl-fu-color: #4758AB; + --quarto-hl-st-color: #20794D; + --quarto-hl-cf-color: #003B4F; + --quarto-hl-op-color: #5E5E5E; + --quarto-hl-er-color: #AD0000; + --quarto-hl-bn-color: #AD0000; + --quarto-hl-al-color: #AD0000; + --quarto-hl-va-color: #111111; + --quarto-hl-bu-color: inherit; + --quarto-hl-ex-color: inherit; + --quarto-hl-pp-color: #AD0000; + --quarto-hl-in-color: #5E5E5E; + --quarto-hl-vs-color: #20794D; + --quarto-hl-wa-color: #5E5E5E; + --quarto-hl-do-color: #5E5E5E; + --quarto-hl-im-color: #00769E; + --quarto-hl-ch-color: #20794D; + --quarto-hl-dt-color: #AD0000; + --quarto-hl-fl-color: #AD0000; + --quarto-hl-co-color: #5E5E5E; + --quarto-hl-cv-color: #5E5E5E; + --quarto-hl-cn-color: #8f5902; + --quarto-hl-sc-color: #5E5E5E; + --quarto-hl-dv-color: #AD0000; + --quarto-hl-kw-color: #003B4F; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +pre > code.sourceCode > span { + color: #003B4F; +} + +code span { + color: #003B4F; +} + +code.sourceCode > span { + color: #003B4F; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #003B4F; +} + +code span.ot { + color: #003B4F; + font-style: inherit; +} + +code span.at { + color: #657422; + font-style: inherit; +} + +code span.ss { + color: #20794D; + font-style: inherit; +} + +code span.an { + color: #5E5E5E; + font-style: inherit; +} + +code span.fu { + color: #4758AB; + font-style: inherit; +} + +code span.st { + color: #20794D; + font-style: inherit; +} + +code span.cf { + color: #003B4F; + font-style: inherit; +} + +code span.op { + color: #5E5E5E; + font-style: inherit; +} + +code span.er { + color: #AD0000; + font-style: inherit; +} + +code span.bn { + color: #AD0000; + font-style: inherit; +} + +code span.al { + color: #AD0000; + font-style: inherit; +} + +code span.va { + color: #111111; + font-style: inherit; +} + +code span.bu { + font-style: inherit; +} + +code span.ex { + font-style: inherit; +} + +code span.pp { + color: #AD0000; + font-style: inherit; +} + +code span.in { + color: #5E5E5E; + font-style: inherit; +} + +code span.vs { + color: #20794D; + font-style: inherit; +} + +code span.wa { + color: #5E5E5E; + font-style: italic; +} + +code span.do { + color: #5E5E5E; + font-style: italic; +} + +code span.im { + color: #00769E; + font-style: inherit; +} + +code span.ch { + color: #20794D; + font-style: inherit; +} + +code span.dt { + color: #AD0000; + font-style: inherit; +} + +code span.fl { + color: #AD0000; + font-style: inherit; +} + +code span.co { + color: #5E5E5E; + font-style: inherit; +} + +code span.cv { + color: #5E5E5E; + font-style: italic; +} + +code span.cn { + color: #8f5902; + font-style: inherit; +} + +code span.sc { + color: #5E5E5E; + font-style: inherit; +} + +code span.dv { + color: #AD0000; + font-style: inherit; +} + +code span.kw { + color: #003B4F; + font-style: inherit; +} + +.prevent-inlining { + content: " { + // Find any conflicting margin elements and add margins to the + // top to prevent overlap + const marginChildren = window.document.querySelectorAll( + ".column-margin.column-container > * " + ); + + let lastBottom = 0; + for (const marginChild of marginChildren) { + if (marginChild.offsetParent !== null) { + // clear the top margin so we recompute it + marginChild.style.marginTop = null; + const top = marginChild.getBoundingClientRect().top + window.scrollY; + console.log({ + childtop: marginChild.getBoundingClientRect().top, + scroll: window.scrollY, + top, + lastBottom, + }); + if (top < lastBottom) { + const margin = lastBottom - top; + marginChild.style.marginTop = `${margin}px`; + } + const styles = window.getComputedStyle(marginChild); + const marginTop = parseFloat(styles["marginTop"]); + + console.log({ + top, + height: marginChild.getBoundingClientRect().height, + marginTop, + total: top + marginChild.getBoundingClientRect().height + marginTop, + }); + lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Recompute the position of margin elements anytime the body size changes + if (window.ResizeObserver) { + const resizeObserver = new window.ResizeObserver( + throttle(layoutMarginEls, 50) + ); + resizeObserver.observe(window.document.body); + } + + const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); + const sidebarEl = window.document.getElementById("quarto-sidebar"); + const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); + const marginSidebarEl = window.document.getElementById( + "quarto-margin-sidebar" + ); + // function to determine whether the element has a previous sibling that is active + const prevSiblingIsActiveLink = (el) => { + const sibling = el.previousElementSibling; + if (sibling && sibling.tagName === "A") { + return sibling.classList.contains("active"); + } else { + return false; + } + }; + + // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior) + function fireSlideEnter(e) { + const event = window.document.createEvent("Event"); + event.initEvent("slideenter", true, true); + window.document.dispatchEvent(event); + } + const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); + tabs.forEach((tab) => { + tab.addEventListener("shown.bs.tab", fireSlideEnter); + }); + + // fire slideEnter for tabby tab activations (for htmlwidget resize behavior) + document.addEventListener("tabby", fireSlideEnter, false); + + // Track scrolling and mark TOC links as active + // get table of contents and sidebar (bail if we don't have at least one) + const tocLinks = tocEl + ? [...tocEl.querySelectorAll("a[data-scroll-target]")] + : []; + const makeActive = (link) => tocLinks[link].classList.add("active"); + const removeActive = (link) => tocLinks[link].classList.remove("active"); + const removeAllActive = () => + [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); + + // activate the anchor for a section associated with this TOC entry + tocLinks.forEach((link) => { + link.addEventListener("click", () => { + if (link.href.indexOf("#") !== -1) { + const anchor = link.href.split("#")[1]; + const heading = window.document.querySelector( + `[data-anchor-id=${anchor}]` + ); + if (heading) { + // Add the class + heading.classList.add("reveal-anchorjs-link"); + + // function to show the anchor + const handleMouseout = () => { + heading.classList.remove("reveal-anchorjs-link"); + heading.removeEventListener("mouseout", handleMouseout); + }; + + // add a function to clear the anchor when the user mouses out of it + heading.addEventListener("mouseout", handleMouseout); + } + } + }); + }); + + const sections = tocLinks.map((link) => { + const target = link.getAttribute("data-scroll-target"); + if (target.startsWith("#")) { + return window.document.getElementById(decodeURI(`${target.slice(1)}`)); + } else { + return window.document.querySelector(decodeURI(`${target}`)); + } + }); + + const sectionMargin = 200; + let currentActive = 0; + // track whether we've initialized state the first time + let init = false; + + const updateActiveLink = () => { + // The index from bottom to top (e.g. reversed list) + let sectionIndex = -1; + if ( + window.innerHeight + window.pageYOffset >= + window.document.body.offsetHeight + ) { + sectionIndex = 0; + } else { + sectionIndex = [...sections].reverse().findIndex((section) => { + if (section) { + return window.pageYOffset >= section.offsetTop - sectionMargin; + } else { + return false; + } + }); + } + if (sectionIndex > -1) { + const current = sections.length - sectionIndex - 1; + if (current !== currentActive) { + removeAllActive(); + currentActive = current; + makeActive(current); + if (init) { + window.dispatchEvent(sectionChanged); + } + init = true; + } + } + }; + + const inHiddenRegion = (top, bottom, hiddenRegions) => { + for (const region of hiddenRegions) { + if (top <= region.bottom && bottom >= region.top) { + return true; + } + } + return false; + }; + + const categorySelector = "header.quarto-title-block .quarto-category"; + const activateCategories = (href) => { + // Find any categories + // Surround them with a link pointing back to: + // #category=Authoring + try { + const categoryEls = window.document.querySelectorAll(categorySelector); + for (const categoryEl of categoryEls) { + const categoryText = categoryEl.textContent; + if (categoryText) { + const link = `${href}#category=${encodeURIComponent(categoryText)}`; + const linkEl = window.document.createElement("a"); + linkEl.setAttribute("href", link); + for (const child of categoryEl.childNodes) { + linkEl.append(child); + } + categoryEl.appendChild(linkEl); + } + } + } catch { + // Ignore errors + } + }; + function hasTitleCategories() { + return window.document.querySelector(categorySelector) !== null; + } + + function offsetRelativeUrl(url) { + const offset = getMeta("quarto:offset"); + return offset ? offset + url : url; + } + + function offsetAbsoluteUrl(url) { + const offset = getMeta("quarto:offset"); + const baseUrl = new URL(offset, window.location); + + const projRelativeUrl = url.replace(baseUrl, ""); + if (projRelativeUrl.startsWith("/")) { + return projRelativeUrl; + } else { + return "/" + projRelativeUrl; + } + } + + // read a meta tag value + function getMeta(metaName) { + const metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; + } + + async function findAndActivateCategories() { + const currentPagePath = offsetAbsoluteUrl(window.location.href); + const response = await fetch(offsetRelativeUrl("listings.json")); + if (response.status == 200) { + return response.json().then(function (listingPaths) { + const listingHrefs = []; + for (const listingPath of listingPaths) { + const pathWithoutLeadingSlash = listingPath.listing.substring(1); + for (const item of listingPath.items) { + if ( + item === currentPagePath || + item === currentPagePath + "index.html" + ) { + // Resolve this path against the offset to be sure + // we already are using the correct path to the listing + // (this adjusts the listing urls to be rooted against + // whatever root the page is actually running against) + const relative = offsetRelativeUrl(pathWithoutLeadingSlash); + const baseUrl = window.location; + const resolvedPath = new URL(relative, baseUrl); + listingHrefs.push(resolvedPath.pathname); + break; + } + } + } + + // Look up the tree for a nearby linting and use that if we find one + const nearestListing = findNearestParentListing( + offsetAbsoluteUrl(window.location.pathname), + listingHrefs + ); + if (nearestListing) { + activateCategories(nearestListing); + } else { + // See if the referrer is a listing page for this item + const referredRelativePath = offsetAbsoluteUrl(document.referrer); + const referrerListing = listingHrefs.find((listingHref) => { + const isListingReferrer = + listingHref === referredRelativePath || + listingHref === referredRelativePath + "index.html"; + return isListingReferrer; + }); + + if (referrerListing) { + // Try to use the referrer if possible + activateCategories(referrerListing); + } else if (listingHrefs.length > 0) { + // Otherwise, just fall back to the first listing + activateCategories(listingHrefs[0]); + } + } + }); + } + } + if (hasTitleCategories()) { + findAndActivateCategories(); + } + + const findNearestParentListing = (href, listingHrefs) => { + if (!href || !listingHrefs) { + return undefined; + } + // Look up the tree for a nearby linting and use that if we find one + const relativeParts = href.substring(1).split("/"); + while (relativeParts.length > 0) { + const path = relativeParts.join("/"); + for (const listingHref of listingHrefs) { + if (listingHref.startsWith(path)) { + return listingHref; + } + } + relativeParts.pop(); + } + + return undefined; + }; + + const manageSidebarVisiblity = (el, placeholderDescriptor) => { + let isVisible = true; + let elRect; + + return (hiddenRegions) => { + if (el === null) { + return; + } + + // Find the last element of the TOC + const lastChildEl = el.lastElementChild; + + if (lastChildEl) { + // Converts the sidebar to a menu + const convertToMenu = () => { + for (const child of el.children) { + child.style.opacity = 0; + child.style.overflow = "hidden"; + } + + nexttick(() => { + const toggleContainer = window.document.createElement("div"); + toggleContainer.style.width = "100%"; + toggleContainer.classList.add("zindex-over-content"); + toggleContainer.classList.add("quarto-sidebar-toggle"); + toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom + toggleContainer.id = placeholderDescriptor.id; + toggleContainer.style.position = "fixed"; + + const toggleIcon = window.document.createElement("i"); + toggleIcon.classList.add("quarto-sidebar-toggle-icon"); + toggleIcon.classList.add("bi"); + toggleIcon.classList.add("bi-caret-down-fill"); + + const toggleTitle = window.document.createElement("div"); + const titleEl = window.document.body.querySelector( + placeholderDescriptor.titleSelector + ); + if (titleEl) { + toggleTitle.append( + titleEl.textContent || titleEl.innerText, + toggleIcon + ); + } + toggleTitle.classList.add("zindex-over-content"); + toggleTitle.classList.add("quarto-sidebar-toggle-title"); + toggleContainer.append(toggleTitle); + + const toggleContents = window.document.createElement("div"); + toggleContents.classList = el.classList; + toggleContents.classList.add("zindex-over-content"); + toggleContents.classList.add("quarto-sidebar-toggle-contents"); + for (const child of el.children) { + if (child.id === "toc-title") { + continue; + } + + const clone = child.cloneNode(true); + clone.style.opacity = 1; + clone.style.display = null; + toggleContents.append(clone); + } + toggleContents.style.height = "0px"; + const positionToggle = () => { + // position the element (top left of parent, same width as parent) + if (!elRect) { + elRect = el.getBoundingClientRect(); + } + toggleContainer.style.left = `${elRect.left}px`; + toggleContainer.style.top = `${elRect.top}px`; + toggleContainer.style.width = `${elRect.width}px`; + }; + positionToggle(); + + toggleContainer.append(toggleContents); + el.parentElement.prepend(toggleContainer); + + // Process clicks + let tocShowing = false; + // Allow the caller to control whether this is dismissed + // when it is clicked (e.g. sidebar navigation supports + // opening and closing the nav tree, so don't dismiss on click) + const clickEl = placeholderDescriptor.dismissOnClick + ? toggleContainer + : toggleTitle; + + const closeToggle = () => { + if (tocShowing) { + toggleContainer.classList.remove("expanded"); + toggleContents.style.height = "0px"; + tocShowing = false; + } + }; + + // Get rid of any expanded toggle if the user scrolls + window.document.addEventListener( + "scroll", + throttle(() => { + closeToggle(); + }, 50) + ); + + // Handle positioning of the toggle + window.addEventListener( + "resize", + throttle(() => { + elRect = undefined; + positionToggle(); + }, 50) + ); + + window.addEventListener("quarto-hrChanged", () => { + elRect = undefined; + }); + + // Process the click + clickEl.onclick = () => { + if (!tocShowing) { + toggleContainer.classList.add("expanded"); + toggleContents.style.height = null; + tocShowing = true; + } else { + closeToggle(); + } + }; + }); + }; + + // Converts a sidebar from a menu back to a sidebar + const convertToSidebar = () => { + for (const child of el.children) { + child.style.opacity = 1; + child.style.overflow = null; + } + + const placeholderEl = window.document.getElementById( + placeholderDescriptor.id + ); + if (placeholderEl) { + placeholderEl.remove(); + } + + el.classList.remove("rollup"); + }; + + if (isReaderMode()) { + convertToMenu(); + isVisible = false; + } else { + // Find the top and bottom o the element that is being managed + const elTop = el.offsetTop; + const elBottom = + elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; + + if (!isVisible) { + // If the element is current not visible reveal if there are + // no conflicts with overlay regions + if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToSidebar(); + isVisible = true; + } + } else { + // If the element is visible, hide it if it conflicts with overlay regions + // and insert a placeholder toggle (or if we're in reader mode) + if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToMenu(); + isVisible = false; + } + } + } + } + }; + }; + + const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); + for (const tabEl of tabEls) { + const id = tabEl.getAttribute("data-bs-target"); + if (id) { + const columnEl = document.querySelector( + `${id} .column-margin, .tabset-margin-content` + ); + if (columnEl) + tabEl.addEventListener("shown.bs.tab", function (event) { + const el = event.srcElement; + if (el) { + const visibleCls = `${el.id}-margin-content`; + // walk up until we find a parent tabset + let panelTabsetEl = el.parentElement; + while (panelTabsetEl) { + if (panelTabsetEl.classList.contains("panel-tabset")) { + break; + } + panelTabsetEl = panelTabsetEl.parentElement; + } + + if (panelTabsetEl) { + const prevSib = panelTabsetEl.previousElementSibling; + if ( + prevSib && + prevSib.classList.contains("tabset-margin-container") + ) { + const childNodes = prevSib.querySelectorAll( + ".tabset-margin-content" + ); + for (const childEl of childNodes) { + if (childEl.classList.contains(visibleCls)) { + childEl.classList.remove("collapse"); + } else { + childEl.classList.add("collapse"); + } + } + } + } + } + + layoutMarginEls(); + }); + } + } + + // Manage the visibility of the toc and the sidebar + const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { + id: "quarto-toc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { + id: "quarto-sidebarnav-toggle", + titleSelector: ".title", + dismissOnClick: false, + }); + let tocLeftScrollVisibility; + if (leftTocEl) { + tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { + id: "quarto-lefttoc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + } + + // Find the first element that uses formatting in special columns + const conflictingEls = window.document.body.querySelectorAll( + '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' + ); + + // Filter all the possibly conflicting elements into ones + // the do conflict on the left or ride side + const arrConflictingEls = Array.from(conflictingEls); + const leftSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return false; + } + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + className.startsWith("column-") && + !className.endsWith("right") && + !className.endsWith("container") && + className !== "column-margin" + ); + }); + }); + const rightSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return true; + } + + const hasMarginCaption = Array.from(el.classList).find((className) => { + return className == "margin-caption"; + }); + if (hasMarginCaption) { + return true; + } + + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + !className.endsWith("container") && + className.startsWith("column-") && + !className.endsWith("left") + ); + }); + }); + + const kOverlapPaddingSize = 10; + function toRegions(els) { + return els.map((el) => { + const boundRect = el.getBoundingClientRect(); + const top = + boundRect.top + + document.documentElement.scrollTop - + kOverlapPaddingSize; + return { + top, + bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, + }; + }); + } + + let hasObserved = false; + const visibleItemObserver = (els) => { + let visibleElements = [...els]; + const intersectionObserver = new IntersectionObserver( + (entries, _observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (visibleElements.indexOf(entry.target) === -1) { + visibleElements.push(entry.target); + } + } else { + visibleElements = visibleElements.filter((visibleEntry) => { + return visibleEntry !== entry; + }); + } + }); + + if (!hasObserved) { + hideOverlappedSidebars(); + } + hasObserved = true; + }, + {} + ); + els.forEach((el) => { + intersectionObserver.observe(el); + }); + + return { + getVisibleEntries: () => { + return visibleElements; + }, + }; + }; + + const rightElementObserver = visibleItemObserver(rightSideConflictEls); + const leftElementObserver = visibleItemObserver(leftSideConflictEls); + + const hideOverlappedSidebars = () => { + marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); + sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); + if (tocLeftScrollVisibility) { + tocLeftScrollVisibility( + toRegions(leftElementObserver.getVisibleEntries()) + ); + } + }; + + window.quartoToggleReader = () => { + // Applies a slow class (or removes it) + // to update the transition speed + const slowTransition = (slow) => { + const manageTransition = (id, slow) => { + const el = document.getElementById(id); + if (el) { + if (slow) { + el.classList.add("slow"); + } else { + el.classList.remove("slow"); + } + } + }; + + manageTransition("TOC", slow); + manageTransition("quarto-sidebar", slow); + }; + const readerMode = !isReaderMode(); + setReaderModeValue(readerMode); + + // If we're entering reader mode, slow the transition + if (readerMode) { + slowTransition(readerMode); + } + highlightReaderToggle(readerMode); + hideOverlappedSidebars(); + + // If we're exiting reader mode, restore the non-slow transition + if (!readerMode) { + slowTransition(!readerMode); + } + }; + + const highlightReaderToggle = (readerMode) => { + const els = document.querySelectorAll(".quarto-reader-toggle"); + if (els) { + els.forEach((el) => { + if (readerMode) { + el.classList.add("reader"); + } else { + el.classList.remove("reader"); + } + }); + } + }; + + const setReaderModeValue = (val) => { + if (window.location.protocol !== "file:") { + window.localStorage.setItem("quarto-reader-mode", val); + } else { + localReaderMode = val; + } + }; + + const isReaderMode = () => { + if (window.location.protocol !== "file:") { + return window.localStorage.getItem("quarto-reader-mode") === "true"; + } else { + return localReaderMode; + } + }; + let localReaderMode = null; + + const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); + const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; + + // Walk the TOC and collapse/expand nodes + // Nodes are expanded if: + // - they are top level + // - they have children that are 'active' links + // - they are directly below an link that is 'active' + const walk = (el, depth) => { + // Tick depth when we enter a UL + if (el.tagName === "UL") { + depth = depth + 1; + } + + // It this is active link + let isActiveNode = false; + if (el.tagName === "A" && el.classList.contains("active")) { + isActiveNode = true; + } + + // See if there is an active child to this element + let hasActiveChild = false; + for (child of el.children) { + hasActiveChild = walk(child, depth) || hasActiveChild; + } + + // Process the collapse state if this is an UL + if (el.tagName === "UL") { + if (tocOpenDepth === -1 && depth > 1) { + el.classList.add("collapse"); + } else if ( + depth <= tocOpenDepth || + hasActiveChild || + prevSiblingIsActiveLink(el) + ) { + el.classList.remove("collapse"); + } else { + el.classList.add("collapse"); + } + + // untick depth when we leave a UL + depth = depth - 1; + } + return hasActiveChild || isActiveNode; + }; + + // walk the TOC and expand / collapse any items that should be shown + + if (tocEl) { + walk(tocEl, 0); + updateActiveLink(); + } + + // Throttle the scroll event and walk peridiocally + window.document.addEventListener( + "scroll", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 5) + ); + window.addEventListener( + "resize", + throttle(() => { + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 10) + ); + hideOverlappedSidebars(); + highlightReaderToggle(isReaderMode()); +}); + +// grouped tabsets +window.addEventListener("pageshow", (_event) => { + function getTabSettings() { + const data = localStorage.getItem("quarto-persistent-tabsets-data"); + if (!data) { + localStorage.setItem("quarto-persistent-tabsets-data", "{}"); + return {}; + } + if (data) { + return JSON.parse(data); + } + } + + function setTabSettings(data) { + localStorage.setItem( + "quarto-persistent-tabsets-data", + JSON.stringify(data) + ); + } + + function setTabState(groupName, groupValue) { + const data = getTabSettings(); + data[groupName] = groupValue; + setTabSettings(data); + } + + function toggleTab(tab, active) { + const tabPanelId = tab.getAttribute("aria-controls"); + const tabPanel = document.getElementById(tabPanelId); + if (active) { + tab.classList.add("active"); + tabPanel.classList.add("active"); + } else { + tab.classList.remove("active"); + tabPanel.classList.remove("active"); + } + } + + function toggleAll(selectedGroup, selectorsToSync) { + for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { + const active = selectedGroup === thisGroup; + for (const tab of tabs) { + toggleTab(tab, active); + } + } + } + + function findSelectorsToSyncByLanguage() { + const result = {}; + const tabs = Array.from( + document.querySelectorAll(`div[data-group] a[id^='tabset-']`) + ); + for (const item of tabs) { + const div = item.parentElement.parentElement.parentElement; + const group = div.getAttribute("data-group"); + if (!result[group]) { + result[group] = {}; + } + const selectorsToSync = result[group]; + const value = item.innerHTML; + if (!selectorsToSync[value]) { + selectorsToSync[value] = []; + } + selectorsToSync[value].push(item); + } + return result; + } + + function setupSelectorSync() { + const selectorsToSync = findSelectorsToSyncByLanguage(); + Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { + Object.entries(tabSetsByValue).forEach(([value, items]) => { + items.forEach((item) => { + item.addEventListener("click", (_event) => { + setTabState(group, value); + toggleAll(value, selectorsToSync[group]); + }); + }); + }); + }); + return selectorsToSync; + } + + const selectorsToSync = setupSelectorSync(); + for (const [group, selectedName] of Object.entries(getTabSettings())) { + const selectors = selectorsToSync[group]; + // it's possible that stale state gives us empty selections, so we explicitly check here. + if (selectors) { + toggleAll(selectedName, selectors); + } + } +}); + +function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; +} + +function nexttick(func) { + return setTimeout(func, 0); +} diff --git a/site_libs/quarto-html/tippy.css b/site_libs/quarto-html/tippy.css new file mode 100644 index 0000000..e6ae635 --- /dev/null +++ b/site_libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/site_libs/quarto-html/tippy.umd.min.js b/site_libs/quarto-html/tippy.umd.min.js new file mode 100644 index 0000000..ca292be --- /dev/null +++ b/site_libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/site_libs/quarto-nav/headroom.min.js b/site_libs/quarto-nav/headroom.min.js new file mode 100644 index 0000000..b08f1df --- /dev/null +++ b/site_libs/quarto-nav/headroom.min.js @@ -0,0 +1,7 @@ +/*! + * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it + * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js + * License: MIT + */ + +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s}); diff --git a/site_libs/quarto-nav/quarto-nav.js b/site_libs/quarto-nav/quarto-nav.js new file mode 100644 index 0000000..3b21201 --- /dev/null +++ b/site_libs/quarto-nav/quarto-nav.js @@ -0,0 +1,277 @@ +const headroomChanged = new CustomEvent("quarto-hrChanged", { + detail: {}, + bubbles: true, + cancelable: false, + composed: false, +}); + +window.document.addEventListener("DOMContentLoaded", function () { + let init = false; + + // Manage the back to top button, if one is present. + let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; + const scrollDownBuffer = 5; + const scrollUpBuffer = 35; + const btn = document.getElementById("quarto-back-to-top"); + const hideBackToTop = () => { + btn.style.display = "none"; + }; + const showBackToTop = () => { + btn.style.display = "inline-block"; + }; + if (btn) { + window.document.addEventListener( + "scroll", + function () { + const currentScrollTop = + window.pageYOffset || document.documentElement.scrollTop; + + // Shows and hides the button 'intelligently' as the user scrolls + if (currentScrollTop - scrollDownBuffer > lastScrollTop) { + hideBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } else if (currentScrollTop < lastScrollTop - scrollUpBuffer) { + showBackToTop(); + lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; + } + + // Show the button at the bottom, hides it at the top + if (currentScrollTop <= 0) { + hideBackToTop(); + } else if ( + window.innerHeight + currentScrollTop >= + document.body.offsetHeight + ) { + showBackToTop(); + } + }, + false + ); + } + + function throttle(func, wait) { + var timeout; + return function () { + const context = this; + const args = arguments; + const later = function () { + clearTimeout(timeout); + timeout = null; + func.apply(context, args); + }; + + if (!timeout) { + timeout = setTimeout(later, wait); + } + }; + } + + function headerOffset() { + // Set an offset if there is are fixed top navbar + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl) { + return headerEl.clientHeight; + } else { + return 0; + } + } + + function footerOffset() { + const footerEl = window.document.querySelector("footer.footer"); + if (footerEl) { + return footerEl.clientHeight; + } else { + return 0; + } + } + + function updateDocumentOffsetWithoutAnimation() { + updateDocumentOffset(false); + } + + function updateDocumentOffset(animated) { + // set body offset + const topOffset = headerOffset(); + const bodyOffset = topOffset + footerOffset(); + const bodyEl = window.document.body; + bodyEl.setAttribute("data-bs-offset", topOffset); + bodyEl.style.paddingTop = topOffset + "px"; + + // deal with sidebar offsets + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + if (!animated) { + sidebar.classList.add("notransition"); + // Remove the no transition class after the animation has time to complete + setTimeout(function () { + sidebar.classList.remove("notransition"); + }, 201); + } + + if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) { + sidebar.style.top = "0"; + sidebar.style.maxHeight = "100vh"; + } else { + sidebar.style.top = topOffset + "px"; + sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)"; + } + }); + + // allow space for footer + const mainContainer = window.document.querySelector(".quarto-container"); + if (mainContainer) { + mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)"; + } + + // link offset + let linkStyle = window.document.querySelector("#quarto-target-style"); + if (!linkStyle) { + linkStyle = window.document.createElement("style"); + linkStyle.setAttribute("id", "quarto-target-style"); + window.document.head.appendChild(linkStyle); + } + while (linkStyle.firstChild) { + linkStyle.removeChild(linkStyle.firstChild); + } + if (topOffset > 0) { + linkStyle.appendChild( + window.document.createTextNode(` + section:target::before { + content: ""; + display: block; + height: ${topOffset}px; + margin: -${topOffset}px 0 0; + }`) + ); + } + if (init) { + window.dispatchEvent(headroomChanged); + } + init = true; + } + + // initialize headroom + var header = window.document.querySelector("#quarto-header"); + if (header && window.Headroom) { + const headroom = new window.Headroom(header, { + tolerance: 5, + onPin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.remove("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + onUnpin: function () { + const sidebars = window.document.querySelectorAll( + ".sidebar, .headroom-target" + ); + sidebars.forEach((sidebar) => { + sidebar.classList.add("sidebar-unpinned"); + }); + updateDocumentOffset(); + }, + }); + headroom.init(); + + let frozen = false; + window.quartoToggleHeadroom = function () { + if (frozen) { + headroom.unfreeze(); + frozen = false; + } else { + headroom.freeze(); + frozen = true; + } + }; + } + + window.addEventListener( + "hashchange", + function (e) { + if ( + getComputedStyle(document.documentElement).scrollBehavior !== "smooth" + ) { + window.scrollTo(0, window.pageYOffset - headerOffset()); + } + }, + false + ); + + // Observe size changed for the header + const headerEl = window.document.querySelector("header.fixed-top"); + if (headerEl && window.ResizeObserver) { + const observer = new window.ResizeObserver( + updateDocumentOffsetWithoutAnimation + ); + observer.observe(headerEl, { + attributes: true, + childList: true, + characterData: true, + }); + } else { + window.addEventListener( + "resize", + throttle(updateDocumentOffsetWithoutAnimation, 50) + ); + } + setTimeout(updateDocumentOffsetWithoutAnimation, 250); + + // fixup index.html links if we aren't on the filesystem + if (window.location.protocol !== "file:") { + const links = window.document.querySelectorAll("a"); + for (let i = 0; i < links.length; i++) { + if (links[i].href) { + links[i].href = links[i].href.replace(/\/index\.html/, "/"); + } + } + + // Fixup any sharing links that require urls + // Append url to any sharing urls + const sharingLinks = window.document.querySelectorAll( + "a.sidebar-tools-main-item" + ); + for (let i = 0; i < sharingLinks.length; i++) { + const sharingLink = sharingLinks[i]; + const href = sharingLink.getAttribute("href"); + if (href) { + sharingLink.setAttribute( + "href", + href.replace("|url|", window.location.href) + ); + } + } + + // Scroll the active navigation item into view, if necessary + const navSidebar = window.document.querySelector("nav#quarto-sidebar"); + if (navSidebar) { + // Find the active item + const activeItem = navSidebar.querySelector("li.sidebar-item a.active"); + if (activeItem) { + // Wait for the scroll height and height to resolve by observing size changes on the + // nav element that is scrollable + const resizeObserver = new ResizeObserver((_entries) => { + // The bottom of the element + const elBottom = activeItem.offsetTop; + const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight; + + // The element height and scroll height are the same, then we are still loading + if (viewBottom !== navSidebar.scrollHeight) { + // Determine if the item isn't visible and scroll to it + if (elBottom >= viewBottom) { + navSidebar.scrollTop = elBottom; + } + + // stop observing now since we've completed the scroll + resizeObserver.unobserve(navSidebar); + } + }); + resizeObserver.observe(navSidebar); + } + } + } +}); diff --git a/site_libs/quarto-search/autocomplete.umd.js b/site_libs/quarto-search/autocomplete.umd.js new file mode 100644 index 0000000..619c57c --- /dev/null +++ b/site_libs/quarto-search/autocomplete.umd.js @@ -0,0 +1,3 @@ +/*! @algolia/autocomplete-js 1.7.3 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-js"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,i=[],u=!0,a=!1;try{for(n=n.call(e);!(u=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);u=!0);}catch(e){a=!0,o=e}finally{try{u||null==n.return||n.return()}finally{if(a)throw o}}return i}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||l(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=n?null===r?null:0:o}function S(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ae,ce,le,se=null,pe=(ae=-1,ce=-1,le=void 0,function(e){var t=++ae;return Promise.resolve(e).then((function(e){return le&&t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ye=["props","refresh","store"],be=["inputElement","formElement","panelElement"],Oe=["inputElement"],_e=["inputElement","maxLength"],Pe=["item","source"];function je(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function we(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ee(e){var t=e.props,n=e.refresh,r=e.store,o=Ie(e,ye);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,i=e.panelElement;function u(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,i].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return we({onTouchStart:u,onMouseDown:u,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},Ie(e,be))},getRootProps:function(e){return we({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,we({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(we({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(we({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},Ie(e,Oe))},getLabelProps:function(e){return we({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var i;function u(e){(t.openOnFocus||Boolean(r.getState().query))&&fe(we({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var a=e||{};a.inputElement;var c=a.maxLength,l=void 0===c?512:c,s=Ie(a,_e),p=A(r.getState()),f=function(e){return Boolean(e&&e.match(C))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),d=null!=p&&p.itemUrl&&!f?"go":"search";return we({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:d,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:l,type:"search",onChange:function(e){fe(we({event:e,props:t,query:e.currentTarget.value.slice(0,l),refresh:n,store:r},o))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,i=ge(e,de);if("ArrowUp"===t.key||"ArrowDown"===t.key){var u=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},a=function(){var e=A(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,u=e.itemInputValue,a=e.itemUrl,c=e.source;c.onActive(ve({event:t,item:n,itemInputValue:u,itemUrl:a,refresh:r,source:c,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?fe(ve({event:t,props:n,query:o.getState().query,refresh:r,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),a(),setTimeout(u,0)})):(o.dispatch(t.key,{}),a(),u())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||o.pendingRequests.cancelAll());t.preventDefault();var c=A(o.getState()),l=c.item,s=c.itemInputValue,p=c.itemUrl,f=c.source;if(t.metaKey||t.ctrlKey)void 0!==p&&(f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),n.navigator.navigateNewTab({itemUrl:p,item:l,state:o.getState()}));else if(t.shiftKey)void 0!==p&&(f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),n.navigator.navigateNewWindow({itemUrl:p,item:l,state:o.getState()}));else if(t.altKey);else{if(void 0!==p)return f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i)),void n.navigator.navigate({itemUrl:p,item:l,state:o.getState()});fe(ve({event:t,nextState:{isOpen:!1},props:n,query:s,refresh:r,store:o},i)).then((function(){f.onSelect(ve({event:t,item:l,itemInputValue:s,itemUrl:p,refresh:r,source:f,state:o.getState()},i))}))}}}(we({event:e,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:y,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},s)},getPanelProps:function(e){return we({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){return we({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var i=e.item,u=e.source,a=Ie(e,Pe);return we({id:"".concat(t.id,"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=A(r.getState());if(null!==r.getState().activeItemId&&t){var u=t.item,a=t.itemInputValue,c=t.itemUrl,l=t.source;l.onActive(we({event:e,item:u,itemInputValue:a,itemUrl:c,refresh:n,source:l,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=u.getItemInputValue({item:i,state:r.getState()}),c=u.getItemUrl({item:i,state:r.getState()});(c?Promise.resolve():fe(we({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},o))).then((function(){u.onSelect(we({event:e,item:i,itemInputValue:a,itemUrl:c,refresh:n,source:u,state:r.getState()},o))}))}},a)}}}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ce(e){for(var t=1;t0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:v(),plugins:o,initialState:H({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(F(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return E(e,n)}))).then((function(e){return d(e)})).then((function(e){return e.map((function(e){return H(H({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:H({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}(e,t),r=R(Te,n,(function(e){var t=e.prevState,r=e.state;n.onStateChange(Be({prevState:t,state:r,refresh:u},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var n=0,r=e.map((function(e){return L(L({},e),{},{items:d(e.items).map((function(e){return L(L({},e),{},{__autocomplete_id:n++})}))})}));t.dispatch("setCollections",r)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:r}),i=Ee(Be({props:n,refresh:u,store:r},o));function u(){return fe(Be({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:u,store:r},o))}return n.plugins.forEach((function(e){var n;return null===(n=e.subscribe)||void 0===n?void 0:n.call(e,Be(Be({},o),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,n,r=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(n=t.userAgent)||void 0===n?void 0:n.includes("Algolia Crawler")){var i=o.document.createElement("meta"),u=o.document.querySelector("head");i.name="algolia:metadata",setTimeout((function(){i.content=JSON.stringify(r),u.appendChild(i)}),0)}}({metadata:ke({plugins:n.plugins,options:e}),environment:n.environment}),Be(Be({refresh:u},i),o)}var Ue=function(e,t,n,r){var o;t[0]=0;for(var i=1;i=5&&((o||!e&&5===r)&&(u.push(r,0,o,n),r=6),e&&(u.push(r,e,0,n),r=6)),o=""},c=0;c"===t?(r=1,o=""):o=t+o[0]:i?t===i?i="":o+=t:'"'===t||"'"===t?i=t:">"===t?(a(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[c][l+1])?(a(),3===r&&(u=u[0]),r=u,(u=u[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(),r=2):o+=t),3===r&&"!--"===o&&(r=4,u=u[0])}return a(),u}(e)),t),arguments,[])).length>1?t:t[0]}var We=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n};function Qe(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function $e(){for(var e=arguments.length,t=new Array(e),n=0;n2&&(u.children=arguments.length>3?lt.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===u[i]&&(u[i]=e.defaultProps[i]);return _t(e,u,r,o,null)}function _t(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++pt:o};return null==o&&null!=st.vnode&&st.vnode(i),i}function Pt(e){return e.children}function jt(e,t){this.props=e,this.context=t}function wt(e,t){if(null==t)return e.__?wt(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t0?_t(d.type,d.props,d.key,null,d.__v):d)){if(d.__=n,d.__b=n.__b+1,null===(f=g[s])||f&&d.key==f.key&&d.type===f.type)g[s]=void 0;else for(p=0;p0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(Ht);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Wt(e){return function(e){if(Array.isArray(e))return Qt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Qt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Qt(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",""":'"',"'":"'"},Gt=new RegExp(/\w/i),Kt=/&(amp|quot|lt|gt|#39);/g,Jt=RegExp(Kt.source);function Yt(e,t){var n,r,o,i=e[t],u=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,a=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return Gt.test((o=i.value)&&Jt.test(o)?o.replace(Kt,(function(e){return zt[e]})):o)||a!==u?i.isHighlighted:a}function Xt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zt(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function mn(e){return function(e){if(Array.isArray(e))return vn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return vn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return vn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;if(!O.value.core.openOnFocus&&!t.query)return n;var r=Boolean(h.current||O.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:Sn,options:e}}))})),j=p(n({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},O.value.core.initialState)),w={getEnvironmentProps:O.value.renderer.getEnvironmentProps,getFormProps:O.value.renderer.getFormProps,getInputProps:O.value.renderer.getInputProps,getItemProps:O.value.renderer.getItemProps,getLabelProps:O.value.renderer.getLabelProps,getListProps:O.value.renderer.getListProps,getPanelProps:O.value.renderer.getPanelProps,getRootProps:O.value.renderer.getRootProps},S={setActiveItemId:P.value.setActiveItemId,setQuery:P.value.setQuery,setCollections:P.value.setCollections,setIsOpen:P.value.setIsOpen,setStatus:P.value.setStatus,setContext:P.value.setContext,refresh:P.value.refresh},I=d((function(){return Ve.bind(O.value.renderer.renderer.createElement)})),E=d((function(){return ct({autocomplete:P.value,autocompleteScopeApi:S,classNames:O.value.renderer.classNames,environment:O.value.core.environment,isDetached:_.value,placeholder:O.value.core.placeholder,propGetters:w,setIsModalOpen:k,state:j.current,translations:O.value.renderer.translations})}));function A(){tt(E.value.panel,{style:_.value?{}:wn({panelPlacement:O.value.renderer.panelPlacement,container:E.value.root,form:E.value.form,environment:O.value.core.environment})})}function C(e){j.current=e;var t={autocomplete:P.value,autocompleteScopeApi:S,classNames:O.value.renderer.classNames,components:O.value.renderer.components,container:O.value.renderer.container,html:I.value,dom:E.value,panelContainer:_.value?E.value.detachedContainer:O.value.renderer.panelContainer,propGetters:w,state:j.current,renderer:O.value.renderer.renderer},r=!g(e)&&!h.current&&O.value.renderer.renderNoResults||O.value.renderer.render;!function(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.dom,i=e.propGetters,u=e.state;nt(o.root,i.getRootProps(n({state:u,props:t.getRootProps({})},r))),nt(o.input,i.getInputProps(n({state:u,props:t.getInputProps({inputElement:o.input}),inputElement:o.input},r))),tt(o.label,{hidden:"stalled"===u.status}),tt(o.loadingIndicator,{hidden:"stalled"!==u.status}),tt(o.clearButton,{hidden:!u.query})}(t),function(e,t){var r=t.autocomplete,o=t.autocompleteScopeApi,u=t.classNames,a=t.html,c=t.dom,l=t.panelContainer,s=t.propGetters,p=t.state,f=t.components,d=t.renderer;if(p.isOpen){l.contains(c.panel)||"loading"===p.status||l.appendChild(c.panel),c.panel.classList.toggle("aa-Panel--stalled","stalled"===p.status);var m=p.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var c=e.source,l=e.items;return d.createElement("section",{key:t,className:u.source,"data-autocomplete-source-id":c.sourceId},c.templates.header&&d.createElement("div",{className:u.sourceHeader},c.templates.header({components:f,createElement:d.createElement,Fragment:d.Fragment,items:l,source:c,state:p,html:a})),c.templates.noResults&&0===l.length?d.createElement("div",{className:u.sourceNoResults},c.templates.noResults({components:f,createElement:d.createElement,Fragment:d.Fragment,source:c,state:p,html:a})):d.createElement("ul",i({className:u.list},s.getListProps(n({state:p,props:r.getListProps({})},o))),l.map((function(e){var t=r.getItemProps({item:e,source:c});return d.createElement("li",i({key:t.id,className:u.item},s.getItemProps(n({state:p,props:t},o))),c.templates.item({components:f,createElement:d.createElement,Fragment:d.Fragment,item:e,state:p,html:a}))}))),c.templates.footer&&d.createElement("div",{className:u.sourceFooter},c.templates.footer({components:f,createElement:d.createElement,Fragment:d.Fragment,items:l,source:c,state:p,html:a})))})),v=d.createElement(d.Fragment,null,d.createElement("div",{className:u.panelLayout},m),d.createElement("div",{className:"aa-GradientBottom"})),h=m.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(n(n({children:v,state:p,sections:m,elements:h},d),{},{components:f,html:a},o),c.panel)}else l.contains(c.panel)&&l.removeChild(c.panel)}(r,t)}function D(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};c();var t=O.value.renderer,n=t.components,r=u(t,In);y.current=Ge(r,O.value.core,{components:Ke(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:j.current},e),m(),l(),P.value.refresh().then((function(){C(j.current)}))}function k(e){requestAnimationFrame((function(){var t=O.value.core.environment.document.body.contains(E.value.detachedOverlay);e!==t&&(e?(O.value.core.environment.document.body.appendChild(E.value.detachedOverlay),O.value.core.environment.document.body.classList.add("aa-Detached"),E.value.input.focus()):(O.value.core.environment.document.body.removeChild(E.value.detachedOverlay),O.value.core.environment.document.body.classList.remove("aa-Detached"),P.value.setQuery(""),P.value.refresh()))}))}return a((function(){var e=P.value.getEnvironmentProps({formElement:E.value.form,panelElement:E.value.panel,inputElement:E.value.input});return tt(O.value.core.environment,e),function(){tt(O.value.core.environment,Object.keys(e).reduce((function(e,t){return n(n({},e),{},o({},t,void 0))}),{}))}})),a((function(){var e=_.value?O.value.core.environment.document.body:O.value.renderer.panelContainer,t=_.value?E.value.detachedOverlay:E.value.panel;return _.value&&j.current.isOpen&&k(!0),C(j.current),function(){e.contains(t)&&e.removeChild(t)}})),a((function(){var e=O.value.renderer.container;return e.appendChild(E.value.root),function(){e.removeChild(E.value.root)}})),a((function(){var e=f((function(e){C(e.state)}),0);return b.current=function(t){var n=t.state,r=t.prevState;(_.value&&r.isOpen!==n.isOpen&&k(n.isOpen),_.value||!n.isOpen||r.isOpen||A(),n.query!==r.query)&&O.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){b.current=void 0}})),a((function(){var e=f((function(){var e=_.value;_.value=O.value.core.environment.matchMedia(O.value.renderer.detachedMediaQuery).matches,e!==_.value?D({}):requestAnimationFrame(A)}),20);return O.value.core.environment.addEventListener("resize",e),function(){O.value.core.environment.removeEventListener("resize",e)}})),a((function(){if(!_.value)return function(){};function e(e){E.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=O.value.core.environment.matchMedia(getComputedStyle(O.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),a((function(){return requestAnimationFrame(A),function(){}})),n(n({},S),{},{update:D,destroy:function(){c()}})},e.getAlgoliaFacets=function(e){var t=En({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=An,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/site_libs/quarto-search/fuse.min.js b/site_libs/quarto-search/fuse.min.js new file mode 100644 index 0000000..adc2835 --- /dev/null +++ b/site_libs/quarto-search/fuse.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2022 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/site_libs/quarto-search/quarto-search.js b/site_libs/quarto-search/quarto-search.js new file mode 100644 index 0000000..f5d852d --- /dev/null +++ b/site_libs/quarto-search/quarto-search.js @@ -0,0 +1,1140 @@ +const kQueryArg = "q"; +const kResultsArg = "show-results"; + +// If items don't provide a URL, then both the navigator and the onSelect +// function aren't called (and therefore, the default implementation is used) +// +// We're using this sentinel URL to signal to those handlers that this +// item is a more item (along with the type) and can be handled appropriately +const kItemTypeMoreHref = "0767FDFD-0422-4E5A-BC8A-3BE11E5BBA05"; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Ensure that search is available on this page. If it isn't, + // should return early and not do anything + var searchEl = window.document.getElementById("quarto-search"); + if (!searchEl) return; + + const { autocomplete } = window["@algolia/autocomplete-js"]; + + let quartoSearchOptions = {}; + let language = {}; + const searchOptionEl = window.document.getElementById( + "quarto-search-options" + ); + if (searchOptionEl) { + const jsonStr = searchOptionEl.textContent; + quartoSearchOptions = JSON.parse(jsonStr); + language = quartoSearchOptions.language; + } + + // note the search mode + if (quartoSearchOptions.type === "overlay") { + searchEl.classList.add("type-overlay"); + } else { + searchEl.classList.add("type-textbox"); + } + + // Used to determine highlighting behavior for this page + // A `q` query param is expected when the user follows a search + // to this page + const currentUrl = new URL(window.location); + const query = currentUrl.searchParams.get(kQueryArg); + const showSearchResults = currentUrl.searchParams.get(kResultsArg); + const mainEl = window.document.querySelector("main"); + + // highlight matches on the page + if (query !== null && mainEl) { + // perform any highlighting + highlight(escapeRegExp(query), mainEl); + + // fix up the URL to remove the q query param + const replacementUrl = new URL(window.location); + replacementUrl.searchParams.delete(kQueryArg); + window.history.replaceState({}, "", replacementUrl); + } + + // function to clear highlighting on the page when the search query changes + // (e.g. if the user edits the query or clears it) + let highlighting = true; + const resetHighlighting = (searchTerm) => { + if (mainEl && highlighting && query !== null && searchTerm !== query) { + clearHighlight(query, mainEl); + highlighting = false; + } + }; + + // Clear search highlighting when the user scrolls sufficiently + const resetFn = () => { + resetHighlighting(""); + window.removeEventListener("quarto-hrChanged", resetFn); + window.removeEventListener("quarto-sectionChanged", resetFn); + }; + + // Register this event after the initial scrolling and settling of events + // on the page + window.addEventListener("quarto-hrChanged", resetFn); + window.addEventListener("quarto-sectionChanged", resetFn); + + // Responsively switch to overlay mode if the search is present on the navbar + // Note that switching the sidebar to overlay mode requires more coordinate (not just + // the media query since we generate different HTML for sidebar overlays than we do + // for sidebar input UI) + const detachedMediaQuery = + quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)"; + + // If configured, include the analytics client to send insights + const plugins = configurePlugins(quartoSearchOptions); + + let lastState = null; + const { setIsOpen, setQuery, setCollections } = autocomplete({ + container: searchEl, + detachedMediaQuery: detachedMediaQuery, + defaultActiveItemId: 0, + panelContainer: "#quarto-search-results", + panelPlacement: quartoSearchOptions["panel-placement"], + debug: false, + openOnFocus: true, + plugins, + classNames: { + form: "d-flex", + }, + translations: { + clearButtonTitle: language["search-clear-button-title"], + detachedCancelButtonText: language["search-detached-cancel-button-title"], + submitButtonTitle: language["search-submit-button-title"], + }, + initialState: { + query, + }, + getItemUrl({ item }) { + return item.href; + }, + onStateChange({ state }) { + // Perhaps reset highlighting + resetHighlighting(state.query); + + // If the panel just opened, ensure the panel is positioned properly + if (state.isOpen) { + if (lastState && !lastState.isOpen) { + setTimeout(() => { + positionPanel(quartoSearchOptions["panel-placement"]); + }, 150); + } + } + + // Perhaps show the copy link + showCopyLink(state.query, quartoSearchOptions); + + lastState = state; + }, + reshape({ sources, state }) { + return sources.map((source) => { + try { + const items = source.getItems(); + + // Validate the items + validateItems(items); + + // group the items by document + const groupedItems = new Map(); + items.forEach((item) => { + const hrefParts = item.href.split("#"); + const baseHref = hrefParts[0]; + const isDocumentItem = hrefParts.length === 1; + + const items = groupedItems.get(baseHref); + if (!items) { + groupedItems.set(baseHref, [item]); + } else { + // If the href for this item matches the document + // exactly, place this item first as it is the item that represents + // the document itself + if (isDocumentItem) { + items.unshift(item); + } else { + items.push(item); + } + groupedItems.set(baseHref, items); + } + }); + + const reshapedItems = []; + let count = 1; + for (const [_key, value] of groupedItems) { + const firstItem = value[0]; + reshapedItems.push({ + ...firstItem, + type: kItemTypeDoc, + }); + + const collapseMatches = quartoSearchOptions["collapse-after"]; + const collapseCount = + typeof collapseMatches === "number" ? collapseMatches : 1; + + if (value.length > 1) { + const target = `search-more-${count}`; + const isExpanded = + state.context.expanded && + state.context.expanded.includes(target); + + const remainingCount = value.length - collapseCount; + + for (let i = 1; i < value.length; i++) { + if (collapseMatches && i === collapseCount) { + reshapedItems.push({ + target, + title: isExpanded + ? language["search-hide-matches-text"] + : remainingCount === 1 + ? `${remainingCount} ${language["search-more-match-text"]}` + : `${remainingCount} ${language["search-more-matches-text"]}`, + type: kItemTypeMore, + href: kItemTypeMoreHref, + }); + } + + if (isExpanded || !collapseMatches || i < collapseCount) { + reshapedItems.push({ + ...value[i], + type: kItemTypeItem, + target, + }); + } + } + } + count += 1; + } + + return { + ...source, + getItems() { + return reshapedItems; + }, + }; + } catch (error) { + // Some form of error occurred + return { + ...source, + getItems() { + return [ + { + title: error.name || "An Error Occurred While Searching", + text: + error.message || + "An unknown error occurred while attempting to perform the requested search.", + type: kItemTypeError, + }, + ]; + }, + }; + } + }); + }, + navigator: { + navigate({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.location.assign(itemUrl); + } + }, + navigateNewTab({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + const windowReference = window.open(itemUrl, "_blank", "noopener"); + if (windowReference) { + windowReference.focus(); + } + } + }, + navigateNewWindow({ itemUrl }) { + if (itemUrl !== offsetURL(kItemTypeMoreHref)) { + window.open(itemUrl, "_blank", "noopener"); + } + }, + }, + getSources({ state, setContext, setActiveItemId, refresh }) { + return [ + { + sourceId: "documents", + getItemUrl({ item }) { + if (item.href) { + return offsetURL(item.href); + } else { + return undefined; + } + }, + onSelect({ + item, + state, + setContext, + setIsOpen, + setActiveItemId, + refresh, + }) { + if (item.type === kItemTypeMore) { + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + + // Toggle more + setIsOpen(true); + } + }, + getItems({ query }) { + if (query === null || query === "") { + return []; + } + + const limit = quartoSearchOptions.limit; + if (quartoSearchOptions.algolia) { + return algoliaSearch(query, limit, quartoSearchOptions.algolia); + } else { + // Fuse search options + const fuseSearchOptions = { + isCaseSensitive: false, + shouldSort: true, + minMatchCharLength: 2, + limit: limit, + }; + + return readSearchData().then(function (fuse) { + return fuseSearch(query, fuse, fuseSearchOptions); + }); + } + }, + templates: { + noResults({ createElement }) { + const hasQuery = lastState.query; + + return createElement( + "div", + { + class: `quarto-search-no-results${ + hasQuery ? "" : " no-query" + }`, + }, + language["search-no-results-text"] + ); + }, + header({ items, createElement }) { + // count the documents + const count = items.filter((item) => { + return item.type === kItemTypeDoc; + }).length; + + if (count > 0) { + return createElement( + "div", + { class: "search-result-header" }, + `${count} ${language["search-matching-documents-text"]}` + ); + } else { + return createElement( + "div", + { class: "search-result-header-no-results" }, + `` + ); + } + }, + footer({ _items, createElement }) { + if ( + quartoSearchOptions.algolia && + quartoSearchOptions.algolia["show-logo"] + ) { + const libDir = quartoSearchOptions.algolia["libDir"]; + const logo = createElement("img", { + src: offsetURL( + `${libDir}/quarto-search/search-by-algolia.svg` + ), + class: "algolia-search-logo", + }); + return createElement( + "a", + { href: "http://www.algolia.com/" }, + logo + ); + } + }, + + item({ item, createElement }) { + return renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh + ); + }, + }, + }, + ]; + }, + }); + + window.quartoOpenSearch = () => { + setIsOpen(false); + setIsOpen(true); + focusSearchInput(); + }; + + // Remove the labeleledby attribute since it is pointing + // to a non-existent label + if (quartoSearchOptions.type === "overlay") { + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + if (inputEl) { + inputEl.removeAttribute("aria-labelledby"); + } + } + + // If the main document scrolls dismiss the search results + // (otherwise, since they're floating in the document they can scroll with the document) + window.document.body.onscroll = () => { + setIsOpen(false); + }; + + if (showSearchResults) { + setIsOpen(true); + focusSearchInput(); + } +}); + +function configurePlugins(quartoSearchOptions) { + const autocompletePlugins = []; + const algoliaOptions = quartoSearchOptions.algolia; + if ( + algoliaOptions && + algoliaOptions["analytics-events"] && + algoliaOptions["search-only-api-key"] && + algoliaOptions["application-id"] + ) { + const apiKey = algoliaOptions["search-only-api-key"]; + const appId = algoliaOptions["application-id"]; + + // Aloglia insights may not be loaded because they require cookie consent + // Use deferred loading so events will start being recorded when/if consent + // is granted. + const algoliaInsightsDeferredPlugin = deferredLoadPlugin(() => { + if ( + window.aa && + window["@algolia/autocomplete-plugin-algolia-insights"] + ) { + window.aa("init", { + appId, + apiKey, + useCookie: true, + }); + + const { createAlgoliaInsightsPlugin } = + window["@algolia/autocomplete-plugin-algolia-insights"]; + // Register the insights client + const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({ + insightsClient: window.aa, + onItemsChange({ insights, insightsEvents }) { + const events = insightsEvents.map((event) => { + const maxEvents = event.objectIDs.slice(0, 20); + return { + ...event, + objectIDs: maxEvents, + }; + }); + + insights.viewedObjectIDs(...events); + }, + }); + return algoliaInsightsPlugin; + } + }); + + // Add the plugin + autocompletePlugins.push(algoliaInsightsDeferredPlugin); + return autocompletePlugins; + } +} + +// For plugins that may not load immediately, create a wrapper +// plugin and forward events and plugin data once the plugin +// is initialized. This is useful for cases like cookie consent +// which may prevent the analytics insights event plugin from initializing +// immediately. +function deferredLoadPlugin(createPlugin) { + let plugin = undefined; + let subscribeObj = undefined; + const wrappedPlugin = () => { + if (!plugin && subscribeObj) { + plugin = createPlugin(); + if (plugin && plugin.subscribe) { + plugin.subscribe(subscribeObj); + } + } + return plugin; + }; + + return { + subscribe: (obj) => { + subscribeObj = obj; + }, + onStateChange: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onStateChange) { + plugin.onStateChange(obj); + } + }, + onSubmit: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onSubmit) { + plugin.onSubmit(obj); + } + }, + onReset: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.onReset) { + plugin.onReset(obj); + } + }, + getSources: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.getSources) { + return plugin.getSources(obj); + } else { + return Promise.resolve([]); + } + }, + data: (obj) => { + const plugin = wrappedPlugin(); + if (plugin && plugin.data) { + plugin.data(obj); + } + }, + }; +} + +function validateItems(items) { + // Validate the first item + if (items.length > 0) { + const item = items[0]; + const missingFields = []; + if (item.href == undefined) { + missingFields.push("href"); + } + if (!item.title == undefined) { + missingFields.push("title"); + } + if (!item.text == undefined) { + missingFields.push("text"); + } + + if (missingFields.length === 1) { + throw { + name: `Error: Search index is missing the ${missingFields[0]} field.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items include the ${missingFields[0]} field or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } else if (missingFields.length > 1) { + const missingFieldList = missingFields + .map((field) => { + return `${field}`; + }) + .join(", "); + + throw { + name: `Error: Search index is missing the following fields: ${missingFieldList}.`, + message: `The items being returned for this search do not include all the required fields. Please ensure that your index items includes the following fields: ${missingFieldList}, or use index-fields in your _quarto.yml file to specify the field names.`, + }; + } + } +} + +let lastQuery = null; +function showCopyLink(query, options) { + const language = options.language; + lastQuery = query; + // Insert share icon + const inputSuffixEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix" + ); + + if (inputSuffixEl) { + let copyButtonEl = window.document.body.querySelector( + ".aa-Form .aa-InputWrapperSuffix .aa-CopyButton" + ); + + if (copyButtonEl === null) { + copyButtonEl = window.document.createElement("button"); + copyButtonEl.setAttribute("class", "aa-CopyButton"); + copyButtonEl.setAttribute("type", "button"); + copyButtonEl.setAttribute("title", language["search-copy-link-title"]); + copyButtonEl.onmousedown = (e) => { + e.preventDefault(); + e.stopPropagation(); + }; + + const linkIcon = "bi-clipboard"; + const checkIcon = "bi-check2"; + + const shareIconEl = window.document.createElement("i"); + shareIconEl.setAttribute("class", `bi ${linkIcon}`); + copyButtonEl.appendChild(shareIconEl); + inputSuffixEl.prepend(copyButtonEl); + + const clipboard = new window.ClipboardJS(".aa-CopyButton", { + text: function (_trigger) { + const copyUrl = new URL(window.location); + copyUrl.searchParams.set(kQueryArg, lastQuery); + copyUrl.searchParams.set(kResultsArg, "1"); + return copyUrl.toString(); + }, + }); + clipboard.on("success", function (e) { + // Focus the input + + // button target + const button = e.trigger; + const icon = button.querySelector("i.bi"); + + // flash "checked" + icon.classList.add(checkIcon); + icon.classList.remove(linkIcon); + setTimeout(function () { + icon.classList.remove(checkIcon); + icon.classList.add(linkIcon); + }, 1000); + }); + } + + // If there is a query, show the link icon + if (copyButtonEl) { + if (lastQuery && options["copy-button"]) { + copyButtonEl.style.display = "flex"; + } else { + copyButtonEl.style.display = "none"; + } + } + } +} + +/* Search Index Handling */ +// create the index +var fuseIndex = undefined; +async function readSearchData() { + // Initialize the search index on demand + if (fuseIndex === undefined) { + // create fuse index + const options = { + keys: [ + { name: "title", weight: 20 }, + { name: "section", weight: 20 }, + { name: "text", weight: 10 }, + ], + ignoreLocation: true, + threshold: 0.1, + }; + const fuse = new window.Fuse([], options); + + // fetch the main search.json + const response = await fetch(offsetURL("search.json")); + if (response.status == 200) { + return response.json().then(function (searchDocs) { + searchDocs.forEach(function (searchDoc) { + fuse.add(searchDoc); + }); + fuseIndex = fuse; + return fuseIndex; + }); + } else { + return Promise.reject( + new Error( + "Unexpected status from search index request: " + response.status + ) + ); + } + } + return fuseIndex; +} + +function inputElement() { + return window.document.body.querySelector(".aa-Form .aa-Input"); +} + +function focusSearchInput() { + setTimeout(() => { + const inputEl = inputElement(); + if (inputEl) { + inputEl.focus(); + } + }, 50); +} + +/* Panels */ +const kItemTypeDoc = "document"; +const kItemTypeMore = "document-more"; +const kItemTypeItem = "document-item"; +const kItemTypeError = "error"; + +function renderItem( + item, + createElement, + state, + setActiveItemId, + setContext, + refresh +) { + switch (item.type) { + case kItemTypeDoc: + return createDocumentCard( + createElement, + "file-richtext", + item.title, + item.section, + item.text, + item.href + ); + case kItemTypeMore: + return createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh + ); + case kItemTypeItem: + return createSectionCard( + createElement, + item.section, + item.text, + item.href + ); + case kItemTypeError: + return createErrorCard(createElement, item.title, item.text); + default: + return undefined; + } +} + +function createDocumentCard(createElement, icon, title, section, text, href) { + const iconEl = createElement("i", { + class: `bi bi-${icon} search-result-icon`, + }); + const titleEl = createElement("p", { class: "search-result-title" }, title); + const titleContainerEl = createElement( + "div", + { class: "search-result-title-container" }, + [iconEl, titleEl] + ); + + const textEls = []; + if (section) { + const sectionEl = createElement( + "p", + { class: "search-result-section" }, + section + ); + textEls.push(sectionEl); + } + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + textEls.push(descEl); + + const textContainerEl = createElement( + "div", + { class: "search-result-text-container" }, + textEls + ); + + const containerEl = createElement( + "div", + { + class: "search-result-container", + }, + [titleContainerEl, textContainerEl] + ); + + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + containerEl + ); + + const classes = ["search-result-doc", "search-item"]; + if (!section) { + classes.push("document-selectable"); + } + + return createElement( + "div", + { + class: classes.join(" "), + }, + linkEl + ); +} + +function createMoreCard( + createElement, + item, + state, + setActiveItemId, + setContext, + refresh +) { + const moreCardEl = createElement( + "div", + { + class: "search-result-more search-item", + onClick: (e) => { + // Handle expanding the sections by adding the expanded + // section to the list of expanded sections + toggleExpanded(item, state, setContext, setActiveItemId, refresh); + e.stopPropagation(); + }, + }, + item.title + ); + + return moreCardEl; +} + +function toggleExpanded(item, state, setContext, setActiveItemId, refresh) { + const expanded = state.context.expanded || []; + if (expanded.includes(item.target)) { + setContext({ + expanded: expanded.filter((target) => target !== item.target), + }); + } else { + setContext({ expanded: [...expanded, item.target] }); + } + + refresh(); + setActiveItemId(item.__autocomplete_id); +} + +function createSectionCard(createElement, section, text, href) { + const sectionEl = createSection(createElement, section, text, href); + return createElement( + "div", + { + class: "search-result-doc-section search-item", + }, + sectionEl + ); +} + +function createSection(createElement, title, text, href) { + const descEl = createElement("p", { + class: "search-result-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { class: "search-result-section" }, title); + const linkEl = createElement( + "a", + { + href: offsetURL(href), + class: "search-result-link", + }, + [titleEl, descEl] + ); + return linkEl; +} + +function createErrorCard(createElement, title, text) { + const descEl = createElement("p", { + class: "search-error-text", + dangerouslySetInnerHTML: { + __html: text, + }, + }); + + const titleEl = createElement("p", { + class: "search-error-title", + dangerouslySetInnerHTML: { + __html: ` ${title}`, + }, + }); + const errorEl = createElement("div", { class: "search-error" }, [ + titleEl, + descEl, + ]); + return errorEl; +} + +function positionPanel(pos) { + const panelEl = window.document.querySelector( + "#quarto-search-results .aa-Panel" + ); + const inputEl = window.document.querySelector( + "#quarto-search .aa-Autocomplete" + ); + + if (panelEl && inputEl) { + panelEl.style.top = `${Math.round(panelEl.offsetTop)}px`; + if (pos === "start") { + panelEl.style.left = `${Math.round(inputEl.left)}px`; + } else { + panelEl.style.right = `${Math.round(inputEl.offsetRight)}px`; + } + } +} + +/* Highlighting */ +// highlighting functions +function highlightMatch(query, text) { + if (text) { + const start = text.toLowerCase().indexOf(query.toLowerCase()); + if (start !== -1) { + const startMark = ""; + const endMark = ""; + + const end = start + query.length; + text = + text.slice(0, start) + + startMark + + text.slice(start, end) + + endMark + + text.slice(end); + const startInfo = clipStart(text, start); + const endInfo = clipEnd( + text, + startInfo.position + startMark.length + endMark.length + ); + text = + startInfo.prefix + + text.slice(startInfo.position, endInfo.position) + + endInfo.suffix; + + return text; + } else { + return text; + } + } else { + return text; + } +} + +function clipStart(text, pos) { + const clipStart = pos - 50; + if (clipStart < 0) { + // This will just return the start of the string + return { + position: 0, + prefix: "", + }; + } else { + // We're clipping before the start of the string, walk backwards to the first space. + const spacePos = findSpace(text, pos, -1); + return { + position: spacePos.position, + prefix: "", + }; + } +} + +function clipEnd(text, pos) { + const clipEnd = pos + 200; + if (clipEnd > text.length) { + return { + position: text.length, + suffix: "", + }; + } else { + const spacePos = findSpace(text, clipEnd, 1); + return { + position: spacePos.position, + suffix: spacePos.clipped ? "…" : "", + }; + } +} + +function findSpace(text, start, step) { + let stepPos = start; + while (stepPos > -1 && stepPos < text.length) { + const char = text[stepPos]; + if (char === " " || char === "," || char === ":") { + return { + position: step === 1 ? stepPos : stepPos - step, + clipped: stepPos > 1 && stepPos < text.length, + }; + } + stepPos = stepPos + step; + } + + return { + position: stepPos - step, + clipped: false, + }; +} + +// removes highlighting as implemented by the mark tag +function clearHighlight(searchterm, el) { + const childNodes = el.childNodes; + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + if (node.nodeType === Node.ELEMENT_NODE) { + if ( + node.tagName === "MARK" && + node.innerText.toLowerCase() === searchterm.toLowerCase() + ) { + el.replaceChild(document.createTextNode(node.innerText), node); + } else { + clearHighlight(searchterm, node); + } + } + } +} + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string +} + +// highlight matches +function highlight(term, el) { + const termRegex = new RegExp(term, "ig"); + const childNodes = el.childNodes; + + // walk back to front avoid mutating elements in front of us + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + + if (node.nodeType === Node.TEXT_NODE) { + // Search text nodes for text to highlight + const text = node.nodeValue; + + let startIndex = 0; + let matchIndex = text.search(termRegex); + if (matchIndex > -1) { + const markFragment = document.createDocumentFragment(); + while (matchIndex > -1) { + const prefix = text.slice(startIndex, matchIndex); + markFragment.appendChild(document.createTextNode(prefix)); + + const mark = document.createElement("mark"); + mark.appendChild( + document.createTextNode( + text.slice(matchIndex, matchIndex + term.length) + ) + ); + markFragment.appendChild(mark); + + startIndex = matchIndex + term.length; + matchIndex = text.slice(startIndex).search(new RegExp(term, "ig")); + if (matchIndex > -1) { + matchIndex = startIndex + matchIndex; + } + } + if (startIndex < text.length) { + markFragment.appendChild( + document.createTextNode(text.slice(startIndex, text.length)) + ); + } + + el.replaceChild(markFragment, node); + } + } else if (node.nodeType === Node.ELEMENT_NODE) { + // recurse through elements + highlight(term, node); + } + } +} + +/* Link Handling */ +// get the offset from this page for a given site root relative url +function offsetURL(url) { + var offset = getMeta("quarto:offset"); + return offset ? offset + url : url; +} + +// read a meta tag value +function getMeta(metaName) { + var metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; +} + +function algoliaSearch(query, limit, algoliaOptions) { + const { getAlgoliaResults } = window["@algolia/autocomplete-preset-algolia"]; + + const applicationId = algoliaOptions["application-id"]; + const searchOnlyApiKey = algoliaOptions["search-only-api-key"]; + const indexName = algoliaOptions["index-name"]; + const indexFields = algoliaOptions["index-fields"]; + const searchClient = window.algoliasearch(applicationId, searchOnlyApiKey); + const searchParams = algoliaOptions["params"]; + const searchAnalytics = !!algoliaOptions["analytics-events"]; + + return getAlgoliaResults({ + searchClient, + queries: [ + { + indexName: indexName, + query, + params: { + hitsPerPage: limit, + clickAnalytics: searchAnalytics, + ...searchParams, + }, + }, + ], + transformResponse: (response) => { + if (!indexFields) { + return response.hits.map((hit) => { + return hit.map((item) => { + return { + ...item, + text: highlightMatch(query, item.text), + }; + }); + }); + } else { + const remappedHits = response.hits.map((hit) => { + return hit.map((item) => { + const newItem = { ...item }; + ["href", "section", "title", "text"].forEach((keyName) => { + const mappedName = indexFields[keyName]; + if ( + mappedName && + item[mappedName] !== undefined && + mappedName !== keyName + ) { + newItem[keyName] = item[mappedName]; + delete newItem[mappedName]; + } + }); + newItem.text = highlightMatch(query, newItem.text); + return newItem; + }); + }); + return remappedHits; + } + }, + }); +} + +function fuseSearch(query, fuse, fuseOptions) { + return fuse.search(query, fuseOptions).map((result) => { + const addParam = (url, name, value) => { + const anchorParts = url.split("#"); + const baseUrl = anchorParts[0]; + const sep = baseUrl.search("\\?") > 0 ? "&" : "?"; + anchorParts[0] = baseUrl + sep + name + "=" + value; + return anchorParts.join("#"); + }; + + return { + title: result.item.title, + section: result.item.section, + href: addParam(result.item.href, kQueryArg, query), + text: highlightMatch(query, result.item.text), + }; + }); +} diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..f68606c --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,95 @@ + + + + https://michaelaye.github.io/planetarypy/index.html + 2024-01-17T00:14:31.985Z + + + https://michaelaye.github.io/planetarypy/tutorials/tutorial.html + 2024-01-17T00:14:30.933Z + + + https://michaelaye.github.io/planetarypy/tutorials/pdw_2023.html + 2024-01-17T00:14:28.373Z + + + https://michaelaye.github.io/planetarypy/api/pds.utils.html + 2024-01-17T00:14:26.185Z + + + https://michaelaye.github.io/planetarypy/api/cassini_iss.html + 2024-01-17T00:14:25.017Z + + + https://michaelaye.github.io/planetarypy/api/pds.indexes.html + 2024-01-17T00:14:24.181Z + + + https://michaelaye.github.io/planetarypy/api/diviner.html + 2024-01-17T00:14:21.677Z + + + https://michaelaye.github.io/planetarypy/api/cassini_uvis.html + 2024-01-17T00:14:20.225Z + + + https://michaelaye.github.io/planetarypy/api/pds.opusapi.html + 2024-01-17T00:14:19.105Z + + + https://michaelaye.github.io/planetarypy/api/pds.ctx_index.html + 2024-01-17T00:14:18.529Z + + + https://michaelaye.github.io/planetarypy/api/config.html + 2024-01-17T00:14:17.677Z + + + https://michaelaye.github.io/planetarypy/api/pds.lroc_index.html + 2024-01-17T00:14:16.525Z + + + https://michaelaye.github.io/planetarypy/api/geotools.html + 2024-01-17T00:14:17.281Z + + + https://michaelaye.github.io/planetarypy/api/utils.html + 2024-01-17T00:14:18.221Z + + + https://michaelaye.github.io/planetarypy/api/exceptions.html + 2024-01-17T00:14:18.833Z + + + https://michaelaye.github.io/planetarypy/api/hirise.html + 2024-01-17T00:14:19.629Z + + + https://michaelaye.github.io/planetarypy/api/pds.apps.html + 2024-01-17T00:14:21.409Z + + + https://michaelaye.github.io/planetarypy/api/ctx.html + 2024-01-17T00:14:23.845Z + + + https://michaelaye.github.io/planetarypy/api/pds.crism_index.html + 2024-01-17T00:14:24.701Z + + + https://michaelaye.github.io/planetarypy/api/spice.kernels.html + 2024-01-17T00:14:25.837Z + + + https://michaelaye.github.io/planetarypy/tutorials/pdw2023_demo.html + 2024-01-17T00:14:27.453Z + + + https://michaelaye.github.io/planetarypy/tutorials/apps_demo.html + 2024-01-17T00:14:30.033Z + + + https://michaelaye.github.io/planetarypy/tutorials/spice_howtos.html + 2024-01-17T00:14:31.261Z + + diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..b46c209 --- /dev/null +++ b/styles.css @@ -0,0 +1,18 @@ +.cell-output pre { + margin-left: 0.8rem; + margin-top: 0; + background: none; + border-left: 2px solid lightsalmon; + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + .cell-output .sourceCode { + background: none; + margin-top: 0; + } + + .cell > .sourceCode { + margin-bottom: 0; + } + \ No newline at end of file diff --git a/tutorials/PDW2023_Demo_files/figure-html/cell-19-output-1.png b/tutorials/PDW2023_Demo_files/figure-html/cell-19-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d4dd4b3b47489e5078e3f743ff82601e8ec4dc1a GIT binary patch literal 428745 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
    _287%Wg`FxC{HQfB_>K-y{25K|VIrRxrk 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 z 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

    GjL{WBO@W#(H9H> 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 literal 0 HcmV?d00001 diff --git a/tutorials/apps_demo.html b/tutorials/apps_demo.html new file mode 100644 index 0000000..b1932b7 --- /dev/null +++ b/tutorials/apps_demo.html @@ -0,0 +1,2725 @@ + + + + + + + + + +planetarypy - PlanetaryPy Demo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    + + +
    + +
    + + +
    + + + +
    + +
    +
    +

    PlanetaryPy Demo

    +
    + + + +
    + + + + +
    + + +
    + + +
    +

    Time and Network utils

    +
    +

    Times

    +
    +
    from planetarypy import utils
    +
    +
    +

    Do you remember that the string conversion code for “day-of-year” is %j ?

    +
    +
    +

    Do we want newcomers search for that in Python docs?

    +
    +
    +
    times = ["2002-137", "2005-234T13:00:00.123"]
    +
    +
    +
    isotimes = [utils.nasa_time_to_iso(t) for t in times]
    +isotimes
    +
    +
    ['2002-05-17', '2005-08-22T13:00:00.123000']
    +
    +
    +
    +
    [utils.iso_to_nasa_time(t) for t in isotimes]
    +
    +
    ['2002-137', '2005-234T13:00:00.123000']
    +
    +
    +
    +
    +

    Network

    +
    +
    utils.check_url_exists("https://michaelaye.github.io")
    +
    +
    True
    +
    +
    +
    +
    utils.check_url_exists?
    +
    +
    +
    Signature: utils.check_url_exists(url)
    +Docstring: <no docstring>
    +File:      ~/Dropbox/src/nbplanetary/planetarypy/utils.py
    +Type:      function
    +
    +
    +
    +
    +
    utils.have_internet()
    +
    +
    True
    +
    +
    +
    +
    utils.url_retrieve(
    +    "https://michaelaye.github.io/talks/2021-conda-workshop-kharkiv/conda_talk_Kharkiv_conference.pdf",
    +    "talk_slides.pdf",
    +)
    +
    + +
    +
    +
    +
    +
    +

    PDS Indexes

    +
    +
    from planetarypy.pds.apps import find_indexes, get_index, find_instruments
    +
    +
    +
    find_indexes?
    +
    +
    +
    Signature: find_indexes(instrument: str) -> list
    +Docstring: Find existing indexes for an instrument.
    +File:      ~/Dropbox/src/nbplanetary/planetarypy/pds/apps.py
    +Type:      function
    +
    +
    +
    +
    +
    find_indexes('cassini.uvis')
    +
    +
    ['index',
    + 'moon_summary',
    + 'ring_summary',
    + 'saturn_summary',
    + 'supplemental_index',
    + 'versions']
    +
    +
    +
    +
    find_indexes('go.ssi')  # Galileo orbiter SSImager
    +
    +
    ['edr']
    +
    +
    +
    +
    get_index?
    +
    +
    +
    Signature:
    +get_index(
    +    instr: str,
    +    index_name: str = '',
    +    refresh: bool = True,
    +    force: bool = False,
    +) -> pandas.core.frame.DataFrame
    +Docstring: Example: get_index("cassini.iss", "index")
    +File:      ~/Dropbox/src/nbplanetary/planetarypy/pds/apps.py
    +Type:      function
    +
    +
    +
    +
    +
    get_index("cassini.uvis.ring_summary")
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VOLUME_IDFILE_SPECIFICATION_NAMERING_OBSERVATION_IDMINIMUM_RIGHT_ASCENSIONMAXIMUM_RIGHT_ASCENSIONMINIMUM_DECLINATIONMAXIMUM_DECLINATIONMINIMUM_RING_RADIUSMAXIMUM_RING_RADIUSFINEST_RING_INTERCEPT_RESOLUTION...RING_CENTER_DISTANCESUB_SOLAR_RING_LONGITUDESUB_OBSERVER_RING_LONGITUDERING_CENTER_PHASE_ANGLERING_CENTER_INCIDENCE_ANGLERING_CENTER_NORTH_BASED_INCIDENCE_ANGLERING_CENTER_EMISSION_ANGLERING_CENTER_NORTH_BASED_EMISSION_ANGLESOLAR_RING_OPENING_ANGLEOBSERVER_RING_OPENING_ANGLE
    0COUVIS_0006DATA/D2004_002/EUV2004_002_12_16.LBLS/CO/UVIS/2004-002T12-16/EUV34.15449337.8151419.6797629.7124151074925.3663066570.28987709.0...86724352.465283.109215.93862.78664.404115.59673.661106.339-25.596-16.34
    1COUVIS_0006DATA/D2004_002/EUV2004_002_12_32.LBLS/CO/UVIS/2004-002T12-32/EUV34.15555737.8173139.780739.81348521741.8122900680.92487173.0...86719417.82283.109215.93862.78764.404115.59673.661106.339-25.596-16.34
    2COUVIS_0006DATA/D2004_002/EUV2004_002_12_47.LBLS/CO/UVIS/2004-002T12-47/EUV34.15410737.8169359.8772499.90987864757.6812839690.54686667.0...86714483.175283.11215.93862.78764.404115.59673.661106.339-25.596-16.34
    3COUVIS_0006DATA/D2004_002/EUV2004_002_13_03.LBLS/CO/UVIS/2004-002T13-03/EUV34.15519337.8191529.97817610.010898541745.3552872984.47486145.0...86709548.529283.11215.93862.78764.404115.59673.661106.339-25.596-16.34
    4COUVIS_0006DATA/D2004_002/EUV2004_002_13_18.LBLS/CO/UVIS/2004-002T13-18/EUV34.15724337.82233210.07784510.1105361068459.1252999016.49585635.0...86704613.884283.111215.93862.78864.404115.59673.661106.339-25.596-16.34
    ..................................................................
    167406COUVIS_0060DATA/D2017_258/FUV2017_258_04_31.LBLS/CO/UVIS/2017-258T04-31/FUV355.15626793.92438-69.312846-14.507954126726.8831083278.078246.61634...263974.558178.94826.85699.68163.31963.31940.35940.35926.68149.641
    167407COUVIS_0060DATA/D2017_258/FUV2017_258_07_00.LBLS/CO/UVIS/2017-258T07-00/FUV82.69282382.747154-4.328498-4.268149-999.0-999.0-999.0...251887.753178.94926.66199.19263.31963.31939.69639.69626.68150.304
    167408COUVIS_0060DATA/D2017_258/FUV2017_258_07_15.LBLS/CO/UVIS/2017-258T07-15/FUV54.35867176.196366-4.00728213.298744-999.0-999.0-999.0...157806.504178.95168.0476.00963.31963.31934.94634.94626.68155.054
    167409COUVIS_0060DATA/D2017_258/HDAC2017_258_02_14.LBLS/CO/UVIS/2017-258T02-14/HDAC129.674881143.379042-58.332263-48.522644204871.745219390.53617773.0...447586.578178.9429.923115.55963.31963.31953.07353.07326.68136.927
    167410COUVIS_0060DATA/D2017_258/HDAC2017_258_02_15.LBLS/CO/UVIS/2017-258T02-15/HDAC92.532639116.78171-67.582806-63.39221898954.702230819.67712312.0...357220.013178.94515.877109.15663.31963.31947.6247.6226.68142.38
    + +

    167411 rows × 59 columns

    +
    +
    +
    +
    +
    get_index('go.ssi.edr')
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SPACECRAFT_CLOCK_START_COUNTMISSION_NAMEINSTRUMENT_IDDATA_SET_IDIMAGE_IDOBSERVATION_IDPRODUCT_TYPETARGET_NAMEIMAGE_TIMEFILTER_NAME...SUB_SPACECRAFT_LINESUB_SPACECRAFT_LINE_SAMPLECENTER_RING_RADIUSVOLUME_IDFILE_SPECIFICATION_NAMECOMPRESSION_TYPEENCODING_MIN_COMPRESSION_RATIOENCODING_MAX_COMPRESSION_RATIOENCODING_COMPRESSION_RATIOPROCESSING_HISTORY_TEXT
    030611.0GALILEOSSIGO-V/E-SSI-2-REDR-V1.1UNKPOST_LAUNCH_CHECKOUTREDRBLACK_SKYNaTCLEAR...-999.0-999.0-999GO_0002RAW_CAL/C0003061100R.IMGNONE0.00.00.0VICAR programs run: CATLABEL,BADLABEL,COPY.
    130612.0GALILEOSSIGO-V/E-SSI-2-REDR-V1.1UNKPOST_LAUNCH_CHECKOUTREDRBLACK_SKYNaTCLEAR...-999.0-999.0-999GO_0002RAW_CAL/C0003061200R.IMGNONE0.00.00.0VICAR programs run: CATLABEL,BADLABEL,COPY.
    230613.0GALILEOSSIGO-V/E-SSI-2-REDR-V1.1UNKPOST_LAUNCH_CHECKOUTREDRBLACK_SKYNaTCLEAR...-999.0-999.0-999GO_0002RAW_CAL/C0003061300R.IMGNONE0.00.00.0VICAR programs run: CATLABEL,BADLABEL,COPY.
    330614.0GALILEOSSIGO-V/E-SSI-2-REDR-V1.1UNKPOST_LAUNCH_CHECKOUTREDRBLACK_SKYNaTCLEAR...-999.0-999.0-999GO_0002RAW_CAL/C0003061400R.IMGNONE0.00.00.0VICAR programs run: CATLABEL,BADLABEL,COPY.
    430619.0GALILEOSSIGO-V/E-SSI-2-REDR-V1.1UNKPOST_LAUNCH_CHECKOUTREDRBLACK_SKYNaTCLEAR...-999.0-999.0-999GO_0002RAW_CAL/C0003061900R.IMGNONE0.00.00.0VICAR programs run: CATLABEL,BADLABEL,COPY.
    ..................................................................
    149046006608.22GALILEOSSIGO-J/JSA-SSI-4-REDR-V1.029N003329NSFLTFLD03REDRNON_SCIENCNaTIR-7270...-999.0-999.0-999GO_0023G29/REPAIRED/C0600660822S.IMGINTEGER COSINE TRANSFORM38.91816.98676.488VICAR programs run:SSIMERGE,F2,FASTMOS,FASTMOS...
    149056006608.23GALILEOSSIGO-J/JSA-SSI-4-REDR-V1.029N003329NSFLTFLD03REDRNON_SCIENCNaTIR-7270...-999.0-999.0-999GO_0023G29/REPAIRED/C0600660823S.IMGHUFFMAN0.00.00.0VICAR programs run:SSIMERGE,F2,FASTMOS,FASTMOS...
    149066006609.68GALILEOSSIGO-J/JSA-SSI-4-REDR-V1.029N003429NSFLTFLD03REDRNON_SCIENCNaTIR-8890...-999.0-999.0-999GO_0023G29/REPAIRED/C0600660968S.IMGINTEGER COSINE TRANSFORM6.0544.928.212VICAR programs run:SSIMERGE,F2,FASTMOS,FASTMOS...
    149076006609.69GALILEOSSIGO-J/JSA-SSI-4-REDR-V1.029N003429NSFLTFLD03REDRNON_SCIENCNaTIR-8890...-999.0-999.0-999GO_0023G29/REPAIRED/C0600660969S.IMGHUFFMAN0.00.00.0VICAR programs run:SSIMERGE,F2,FASTMOS,FASTMOS...
    149084203615.0GALILEOSSIGO-J/JSA-SSI-2-REDR-V1.011I000311ISECLIPS01REDRIONaTCLEAR...254.092334.653-999GO_0023REDO/E11/IO/C0420361500R.IMGINTEGER COSINE TRANSFORM8.3546.8439.709VICAR programs run: SSIMERGE,UNMOSAIC,CATLABEL...
    + +

    14909 rows × 52 columns

    +
    +
    +
    +
    +
    find_indexes("cassini.iss")
    +
    +
    ['index', 'inventory', 'moon_summary', 'ring_summary', 'saturn_summary']
    +
    +
    +
    +
    get_index("cassini.iss.saturn_summary")
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VOLUME_IDFILE_SPECIFICATION_NAMEOPUS_IDTARGET_NAMEMINIMUM_PLANETOCENTRIC_LATITUDEMAXIMUM_PLANETOCENTRIC_LATITUDEMINIMUM_PLANETOGRAPHIC_LATITUDEMAXIMUM_PLANETOGRAPHIC_LATITUDEMINIMUM_IAU_LONGITUDEMAXIMUM_IAU_LONGITUDE...MAXIMUM_EMISSION_ANGLESUB_SOLAR_PLANETOCENTRIC_LATITUDESUB_SOLAR_PLANETOGRAPHIC_LATITUDESUB_OBSERVER_PLANETOCENTRIC_LATITUDESUB_OBSERVER_PLANETOGRAPHIC_LATITUDESUB_SOLAR_IAU_LONGITUDESUB_OBSERVER_IAU_LONGITUDECENTER_RESOLUTIONCENTER_DISTANCECENTER_PHASE_ANGLE
    0COISS_2001data/1454725799_1455008789/N1454725799_1.LBLco-iss-n1454725799SATURN-999.0-999.0-999.0-999.0-999.0-999.0...-999.0-25.411-30.279-16.324-19.796107.986176.558424.6760670874998.94764.07
    1COISS_2001data/1454725799_1455008789/N1454726579_1.LBLco-iss-n1454726579SATURN-999.0-999.0-999.0-999.0-999.0-999.0...-999.0-25.411-30.279-16.324-19.796115.305183.877424.6512170870851.37164.07
    2COISS_2001data/1454725799_1455008789/N1454727359_1.LBLco-iss-n1454727359SATURN-999.0-999.0-999.0-999.0-999.0-999.0...-999.0-25.411-30.279-16.324-19.796122.625191.197424.6263570866703.09464.071
    3COISS_2001data/1454725799_1455008789/N1454728139_1.LBLco-iss-n1454728139SATURN-999.0-999.0-999.0-999.0-999.0-999.0...-999.0-25.411-30.279-16.324-19.796129.94198.513424.6015170862557.20764.071
    4COISS_2001data/1454725799_1455008789/N1454728919_1.LBLco-iss-n1454728919SATURN-999.0-999.0-999.0-999.0-999.0-999.0...-999.0-25.411-30.279-16.324-19.796137.264205.837424.5766470858406.79464.071
    ..................................................................
    405116COISS_2116data/1884113741_1884114531/W1884114471_1.LBLco-iss-w1884114471SATURN-999.0-999.0-999.0-999.0-999.0-999.0...51.9726.68231.70129.26234.552263.71579.08175.81817634269.821123.878
    405117COISS_2116data/1884113741_1884114531/N1884114501_1.LBLco-iss-n1884114501SATURN-999.0-999.0-999.0-999.0-999.0-999.0...30.55826.68231.70129.26934.56263.99679.3577.59837634053.296123.87
    405118COISS_2116data/1884113741_1884114531/W1884114501_1.LBLco-iss-w1884114501SATURN-999.0-999.0-999.0-999.0-999.0-999.0...52.19226.68231.70129.2734.56264.00479.36475.79162634047.739123.87
    405119COISS_2116data/1884113741_1884114531/N1884114531_1.LBLco-iss-n1884114531SATURN-999.0-999.0-999.0-999.0-999.0-999.0...30.66526.68231.70129.27734.568264.27879.6337.59578633836.731123.863
    405120COISS_2116data/1884113741_1884114531/W1884114531_2.LBLco-iss-w1884114531SATURN-999.0-999.0-999.0-999.0-999.0-999.0...52.47426.68231.70129.27734.568264.28679.64175.76561633830.161123.862
    + +

    405121 rows × 35 columns

    +
    +
    +
    +
    +
    find_indexes('mro.ctx')
    +
    +
    ['edr']
    +
    +
    +
    +
    get_index('mro.ctx', 'edr', refresh=False)
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VOLUME_IDFILE_SPECIFICATION_NAMEORIGINAL_PRODUCT_IDPRODUCT_IDIMAGE_TIMEINSTRUMENT_IDINSTRUMENT_MODE_IDLINE_SAMPLESLINESSPATIAL_SUMMING...SUB_SOLAR_LATITUDESUB_SPACECRAFT_LONGITUDESUB_SPACECRAFT_LATITUDESOLAR_DISTANCESOLAR_LONGITUDELOCAL_TIMEIMAGE_SKEW_ANGLERATIONALE_DESCDATA_QUALITY_DESCORBIT_NUMBER
    0MROX_0001DATA/CRU_000001_9999_XN_99N999W.IMG4A_04_0001000400CRU_000001_9999_XN_99N999W2005-08-30 15:40:21.549CTXNIFL505610241...0.00.00.00.0278.8910.160.0Instrument checkout image of spaceOK-4242
    1MROX_0001DATA/CRU_000002_9999_XN_99N999W.IMG4A_04_0001000500CRU_000002_9999_XN_99N999W2005-09-08 15:59:45.313CTXNIFL5056153601...0.00.00.00.0284.484.60.0Calibration image of the MoonOK-4126
    2MROX_0001DATA/CRU_000003_9999_XN_99N999W.IMG4A_04_0001000600CRU_000003_9999_XN_99N999W2005-09-08 16:03:37.927CTXNIFL505620481...0.00.00.00.0284.484.660.0Calibration image of Omega Centauri (globular ...OK-4126
    3MROX_0001DATA/CRU_000004_9999_XN_99N999W.IMG4A_04_0001000700CRU_000004_9999_XN_99N999W2005-09-08 16:08:23.841CTXNIFL505620481...0.00.00.00.0284.484.740.0Calibration image of Omega Centauri (globular ...OK-4126
    4MROX_0001DATA/CRU_000005_9999_XN_99N999W.IMG4A_04_0001000800CRU_000005_9999_XN_99N999W2005-09-08 16:11:18.649CTXNIFL5056215041...0.00.00.00.0284.484.790.0Calibration image of the MoonOK-4126
    ..................................................................
    142363MROX_4656DATA/U17_077781_1107_XI_69S045W.IMG4A_04_118B04B300U17_077781_1107_XI_69S045W2023-03-01 00:01:37.834CTXITL505671681...12.7446.17-69.47243271024.830.815.4290.1Southern autumn frost streak area in Viking 2 ...OK77781
    142364MROX_4656DATA/U17_077781_1560_XN_24S055W.IMG4A_04_118A04B400U17_077781_1560_XN_24S055W2023-03-01 00:15:17.076CTXNIFL5056307201...12.7455.44-24.08243270437.830.8114.9690.2Ride-along with HiRISEOK77781
    142365MROX_4656DATA/U17_077781_1683_XN_11S057W.IMG4A_04_118A04B500U17_077781_1683_XN_11S057W2023-03-01 00:19:04.486CTXNIFL5056317441...12.7457.0-11.7243270441.730.8114.9190.2Terrain north of Coprates ChasmaOK77781
    142366MROX_4656DATA/U17_077781_2027_XI_22N061W.IMG4A_04_118B04B600U17_077781_2027_XI_22N061W2023-03-01 00:29:24.818CTXITL5056522241...12.7461.2522.78243271031.730.8114.8289.8Kasei Valles regionOK77781
    142367MROX_4656DATA/U17_077781_2440_XN_64N067W.IMG4A_04_118A04B700U17_077781_2440_XN_64N067W2023-03-01 00:43:08.662CTXNIFL505671681...12.7468.7664.02243272920.630.8214.5989.9Ride-along with HiRISEOK77781
    + +

    142368 rows × 51 columns

    +
    +
    +
    +
    +
    find_instruments('cassini')
    +
    +
    ['iss', 'uvis']
    +
    +
    +
    +
    find_instruments('mro')
    +
    +
    ['hirise', 'ctx']
    +
    +
    +
    +
    find_instruments('lro')
    +
    +
    ['diviner', 'lola', 'lroc']
    +
    +
    +
    +
    +

    Instrument data

    +
    +
    from planetarypy.uvis import DataManager
    +
    +
    +
    index = get_index("cassini.uvis.index")
    +
    +
    +
    index.tail()
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FILE_NAMEOBSERVATION_TYPESTART_TIMESTOP_TIMETARGET_NAMEDATA_SET_IDSPACECRAFT_CLOCK_START_COUNTSPACECRAFT_CLOCK_STOP_COUNTINTEGRATION_DURATIONCOMPRESSION_TYPE...SUB_SOLAR_LONGITUDESUB_SPACECRAFT_LATITUDESUB_SPACECRAFT_LONGITUDEPHASE_ANGLEEMISSION_ANGLESOLAR_INCIDENCE_ANGLECENTRAL_BODY_DISTANCEDWELL_TIMEH_LEVELD_LEVEL
    203240/COUVIS_0060/DATA/D2017_258/FUV2017_258_04_31.LBL<NA>2017-09-15 04:31:53.0052017-09-15 09:04:56.755SOLAR WINDCO-S-UVIS-2-CUBE-V1.41/1884145299.160UNK8191.875SQRT_9...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
    203241/COUVIS_0060/DATA/D2017_258/FUV2017_258_07_00.LBL<NA>2017-09-15 07:00:27.6972017-09-15 07:13:40.447SOLAR WINDCO-S-UVIS-2-SPEC-V1.41/1884154214.096UNK2.625SQRT_9...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
    203242/COUVIS_0060/DATA/D2017_258/FUV2017_258_07_15.LBL<NA>2017-09-15 07:15:04.4422017-09-15 10:31:51.692SOLAR WINDCO-S-UVIS-2-SPEC-V1.41/1884155091.032UNK2.625SQRT_9...-999.0-999.0-999.0-999.0-999.0-999-999.0-999<NA><NA>
    203243/COUVIS_0060/DATA/D2017_258/HDAC2017_258_02_14...<NA>2017-09-15 02:14:02.4332017-09-15 02:14:06.433SOLAR WINDCO-S-UVIS-2-SSB-V1.41/1884137029.000UNK-999.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.01(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    203244/COUVIS_0060/DATA/D2017_258/HDAC2017_258_02_15...<NA>2017-09-15 02:15:25.0582017-09-15 02:17:33.058SOLAR WINDCO-S-UVIS-2-SSB-V1.41/1884137111.160UNK-999.0NONE...-999.0-999.0-999.0-999.0-999.0-999-999.032(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    + +

    5 rows × 28 columns

    +
    +
    +
    +
    +
    dm = DataManager("EUV2017_258_07_00")
    +
    +
    +
    dm.calib_label_path
    +
    +
    Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2017_258_07_00/EUV2017_258_07_00_CAL_3.LBL')
    +
    +
    +
    +
    dm.raw_data_path
    +
    +
    Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2017_258_07_00/EUV2017_258_07_00.DAT')
    +
    +
    +
    +
    dm.raw_label_path
    +
    +
    Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/uvis/EUV2017_258_07_00/EUV2017_258_07_00.LBL')
    +
    +
    +
    +
    from planetarypy.hirise import ProductPathfinder
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    +
    ppf = ProductPathfinder("PSP_003092_0985_RED")
    +
    +
    +
    ppf.local_label_path
    +
    +
    Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/PSP_003092_0985/PSP_003092_0985_RED.LBL')
    +
    +
    +
    +
    ppf.abrowse_path
    +
    +
    Path('EXTRAS/RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.abrowse.jpg')
    +
    +
    +
    +
    ppf.homepage
    +
    +
    'https://uahirise.org/PSP_003092_0985'
    +
    +
    +
    +
    ppf.nomap_jp2_url
    +
    +
    URL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.NOMAP.JP2')
    +
    +
    +
    +
    from planetarypy.hirise import RGB_NOMAP
    +
    +
    +
    rgb = RGB_NOMAP("PSP_003092_0985")
    +
    +
    +
    rgb.local_path
    +
    +
    Path('/home/ayek72/mnt/slowdata/planetarypy/missions/mro/hirise/PSP_003092_0985/PSP_003092_0985_RGB.NOMAP.JP2')
    +
    +
    + + +
    + +
    + + +
    + + + + \ No newline at end of file diff --git a/tutorials/assets/NAIF_archives.png b/tutorials/assets/NAIF_archives.png new file mode 100644 index 0000000000000000000000000000000000000000..807cea57507f7e59d96ce6d4e457a676819f70f8 GIT binary patch literal 157046 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%0AYV? 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 J1yA%o{U1|6LxKPR literal 0 HcmV?d00001 diff --git a/tutorials/pdw2023_demo.html b/tutorials/pdw2023_demo.html new file mode 100644 index 0000000..76c4680 --- /dev/null +++ b/tutorials/pdw2023_demo.html @@ -0,0 +1,4010 @@ + + + + + + + + + +planetarypy - Demo of PlanetaryPy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + +
    + + + +
    + +
    +
    +

    Demo of PlanetaryPy

    +
    + + + +
    + + + + +
    + + +
    + + +
    +
    import planetarypy as plpy
    +
    +
    +
    plpy.__version__
    +
    +
    '0.30.0'
    +
    +
    +
    +
    from planetarypy.pds.apps import get_index, find_indexes
    +
    +
    +
    !head -n 50 $HOME/.planetarypy_config.toml
    +
    +
    storage_root = "/home/ayek72/mnt/slowdata/planetarypy"
    +
    +[missions.cassini.iss.indexes.index]
    +# 'index' is the ID of the originally delivered index
    +# inventory, moon_summary, ring_summary, and saturn_summary are other indexes produced
    +# by the Rings-Moons Systems PDS node
    +url = "https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_index.lbl"
    +timestamp = "2021-02-21T15:55:27"
    +
    +[missions.cassini.iss.indexes.inventory]
    +url = "https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_inventory.lbl"
    +
    +[missions.cassini.iss.indexes.moon_summary]
    +url = "https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_moon_summary.lbl"
    +timestamp = "2019-06-08T16:28:22"
    +
    +[missions.cassini.iss.indexes.ring_summary]
    +url = "https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_ring_summary.lbl"
    +timestamp = "2022-08-08T11:54:51.140376"
    +
    +[missions.cassini.iss.indexes.saturn_summary]
    +url = "https://pds-rings.seti.org/holdings/metadata/COISS_2xxx/COISS_2999/COISS_2999_saturn_summary.lbl"
    +timestamp = "2022-12-21T18:10:29.248055"
    +
    +
    +[missions.cassini.uvis.indexes.index]
    +url = "https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_index.lbl"
    +timestamp = "2022-09-01T14:14:10.014705"
    +
    +[missions.cassini.uvis.indexes.moon_summary]
    +url = "https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_moon_summary.lbl"
    +
    +[missions.cassini.uvis.indexes.ring_summary]
    +url = "https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_ring_summary.lbl"
    +timestamp = "2022-08-08T11:53:16.071844"
    +
    +[missions.cassini.uvis.indexes.saturn_summary]
    +url = "https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_saturn_summary.lbl"
    +
    +[missions.cassini.uvis.indexes.supplemental_index]
    +url = "https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_supplemental_index.lbl"
    +
    +[missions.cassini.uvis.indexes.versions]
    +url = "https://pds-rings.seti.org/holdings/metadata/COUVIS_0xxx/COUVIS_0999/COUVIS_0999_versions.lbl"
    +
    +
    +
    +[missions.mro.hirise.indexes.dtm]
    +url = "https://hirise-pds.lpl.arizona.edu/PDS/INDEX/DTMCUMINDEX.LBL"
    +
    +
    +
    +
    +
    find_indexes("cassini.iss")
    +
    +
    ['index', 'inventory', 'moon_summary', 'ring_summary', 'saturn_summary']
    +
    +
    +
    +
    find_indexes("cassini.uvis")
    +
    +
    ['index',
    + 'moon_summary',
    + 'ring_summary',
    + 'saturn_summary',
    + 'supplemental_index',
    + 'versions']
    +
    +
    +
    +
    df = get_index("cassini.iss.index")
    +df.head()
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FILE_NAMEFILE_SPECIFICATION_NAMEVOLUME_IDANTIBLOOMING_STATE_FLAGBIAS_STRIP_MEANCALIBRATION_LAMP_STATE_FLAGCOMMAND_FILE_NAMECOMMAND_SEQUENCE_NUMBERDARK_STRIP_MEANDATA_CONVERSION_TYPE...TWIST_ANGLETARGET_LISTUPPER_LEFT_LATITUDEUPPER_LEFT_LONGITUDEUPPER_RIGHT_LATITUDEUPPER_RIGHT_LONGITUDEDATA_SET_NAMEINSTRUMENT_HOST_IDPRODUCT_TYPESTANDARD_DATA_PRODUCT_ID
    0N1454725799_1.IMGdata/1454725799_1455008789/N1454725799_1.IMGCOISS_2001OFF14.869863<NA>OPNAV_848_3.ioi80.012BIT...89.513591S2_2004,HELENE,TELESTO,RHEA-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    1N1454726579_1.IMGdata/1454725799_1455008789/N1454726579_1.IMGCOISS_2001OFF14.860078<NA>OPNAV_864_3.ioi80.012BIT...89.647635TITAN-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    2N1454727359_1.IMGdata/1454725799_1455008789/N1454727359_1.IMGCOISS_2001OFF14.87867<NA>OPNAV_880_3.ioi80.012BIT...89.679084HYPERION-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    3N1454728139_1.IMGdata/1454725799_1455008789/N1454728139_1.IMGCOISS_2001OFF14.842465<NA>OPNAV_912_3.ioi80.012BIT...88.677516PHOEBE-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    4N1454728919_1.IMGdata/1454725799_1455008789/N1454728919_1.IMGCOISS_2001OFF14.86497<NA>OPNAV_896_3.ioi80.012BIT...89.79891IAPETUS-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    + +

    5 rows × 140 columns

    +
    +
    +
    +
    +
    df.columns
    +
    +
    Index(['FILE_NAME', 'FILE_SPECIFICATION_NAME', 'VOLUME_ID',
    +       'ANTIBLOOMING_STATE_FLAG', 'BIAS_STRIP_MEAN',
    +       'CALIBRATION_LAMP_STATE_FLAG', 'COMMAND_FILE_NAME',
    +       'COMMAND_SEQUENCE_NUMBER', 'DARK_STRIP_MEAN', 'DATA_CONVERSION_TYPE',
    +       ...
    +       'TWIST_ANGLE', 'TARGET_LIST', 'UPPER_LEFT_LATITUDE',
    +       'UPPER_LEFT_LONGITUDE', 'UPPER_RIGHT_LATITUDE', 'UPPER_RIGHT_LONGITUDE',
    +       'DATA_SET_NAME', 'INSTRUMENT_HOST_ID', 'PRODUCT_TYPE',
    +       'STANDARD_DATA_PRODUCT_ID'],
    +      dtype='object', length=140)
    +
    +
    +
    +
    df.set_index("IMAGE_MID_TIME").loc['20170914 00':'20170914 15']
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FILE_NAMEFILE_SPECIFICATION_NAMEVOLUME_IDANTIBLOOMING_STATE_FLAGBIAS_STRIP_MEANCALIBRATION_LAMP_STATE_FLAGCOMMAND_FILE_NAMECOMMAND_SEQUENCE_NUMBERDARK_STRIP_MEANDATA_CONVERSION_TYPE...TWIST_ANGLETARGET_LISTUPPER_LEFT_LATITUDEUPPER_LEFT_LONGITUDEUPPER_RIGHT_LATITUDEUPPER_RIGHT_LONGITUDEDATA_SET_NAMEINSTRUMENT_HOST_IDPRODUCT_TYPESTANDARD_DATA_PRODUCT_ID
    IMAGE_MID_TIME
    2017-09-14 13:26:59.927N1884091007_1.IMGdata/1884017637_1884113741/N1884091007_1.IMGCOISS_2116OFF21.611872<NA>trigger_25245_3.ioi252451.21844412BIT...4.868274<NA>-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    2017-09-14 13:31:18.910N1884091266_1.IMGdata/1884017637_1884113741/N1884091266_1.IMGCOISS_2116OFF21.594259<NA>trigger_25245_3.ioi252451.22223612BIT...4.812541<NA>-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    2017-09-14 13:35:41.908N1884091529_1.IMGdata/1884017637_1884113741/N1884091529_1.IMGCOISS_2116OFF21.87019<NA>trigger_25245_3.ioi252451.22957412BIT...4.77302DAPHNIS-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    2017-09-14 13:40:04.906N1884091792_1.IMGdata/1884017637_1884113741/N1884091792_1.IMGCOISS_2116OFF21.843445<NA>trigger_25245_3.ioi252451.25403612BIT...4.748047<NA>-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    2017-09-14 13:44:27.905N1884092055_1.IMGdata/1884017637_1884113741/N1884092055_1.IMGCOISS_2116OFF21.885845<NA>trigger_25245_3.ioi252451.26320912BIT...4.736484<NA>-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    2017-09-14 13:48:50.903N1884092318_1.IMGdata/1884017637_1884113741/N1884092318_1.IMGCOISS_2116OFF21.558872<NA>trigger_25245_3.ioi252451.26002912BIT...4.737905<NA>-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    2017-09-14 13:53:13.901N1884092581_1.IMGdata/1884017637_1884113741/N1884092581_1.IMGCOISS_2116OFF21.606491<NA>trigger_25245_3.ioi252451.24828812BIT...4.750201<NA>-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0-100000000000000005366162204393472.0CASSINI ORBITER SATURN ISSNA/ISSWA 2 EDR VERSI...COEDRISS_EDR
    + +

    7 rows × 139 columns

    +
    +
    +
    +
    +

    Cassini ISS

    +
    +
    from planetarypy.ciss import ISS
    +
    +
    +
    iss = ISS("N1884091529_1")
    +
    +
    Found 1 obsids.
    +
    +
    +
    +
    iss.download_raw()
    +
    +
    File exists. Use `overwrite=True` to download fresh.
    +
    +
    +
    +
    iss.local_label_path
    +
    +
    Path('/home/ayek72/mnt/slowdata/planetarypy/missions/cassini/iss/N1884091529_1/N1884091529_1.LBL')
    +
    +
    +
    +
    import pdr
    +
    +
    +
    do = pdr.open(iss.local_data_path)
    +
    +
    +
    type(do)
    +
    +
    pdr.pdr.Data
    +
    +
    +
    +
    do.read_metadata()['IMAGE_MID_TIME']
    +
    +
    '2017-257T13:35:41.908'
    +
    +
    +
    +
    do.show("IMAGE")
    +
    +

    +
    +
    +
    +
    +

    CTX

    +
    +
    from planetarypy.ctx import CTX
    +
    +
    +
    edrs = get_index('mro.ctx.edr', refresh=True)
    +
    + +
    +
    + +
    +
    +
    Downloaded /home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/indexes/edr/cumindex.lbl and /home/ayek72/mnt/slowdata/planetarypy/missions/mro/ctx/indexes/edr/cumindex.tab
    +Done.
    +An updated index is available. Downloading...
    +
    +
    +
    +
    edrs.tail()
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VOLUME_IDFILE_SPECIFICATION_NAMEORIGINAL_PRODUCT_IDPRODUCT_IDIMAGE_TIMEINSTRUMENT_IDINSTRUMENT_MODE_IDLINE_SAMPLESLINESSPATIAL_SUMMING...SUB_SOLAR_LATITUDESUB_SPACECRAFT_LONGITUDESUB_SPACECRAFT_LATITUDESOLAR_DISTANCESOLAR_LONGITUDELOCAL_TIMEIMAGE_SKEW_ANGLERATIONALE_DESCDATA_QUALITY_DESCORBIT_NUMBER
    145081MROX_4759DATA/U20_078960_2636_XN_83N240W.IMG4A_04_1190031700U20_078960_2636_XN_83N240W2023-05-31 21:52:13.062CTXNIFL505671681...24.07239.7483.7249218523.371.5713.790.0Ride-along with HiRISEOK78960
    145082MROX_4759DATA/U20_078961_1433_XI_36S229W.IMG4A_04_1191031800U20_078961_1433_XI_36S229W2023-05-31 23:06:16.597CTXITL5056235521...24.07231.42-36.98249219468.271.5915.6290.2Pursat Crater and terrain to the northOK78961
    145083MROX_4759DATA/U20_078961_1778_XN_02S236W.IMG4A_04_1190031900U20_078961_1778_XN_02S236W2023-05-31 23:16:31.929CTXNIFL5056522241...24.07235.91-2.19249218165.171.615.3490.1Northern Terra CimmeriaOK78961
    145084MROX_4759DATA/U20_078961_2113_XN_31N239W.IMG4A_04_1190031A00U20_078961_2113_XN_31N239W2023-05-31 23:27:38.765CTXNIFL377671681...24.08240.1531.33249217646.671.615.2990.0Ride-along with HiRISEOK78961
    145085MROX_4759DATA/U20_078961_2609_XN_80N259W.IMG4A_04_1190031B00U20_078961_2609_XN_80N259W2023-05-31 23:43:31.515CTXNIFL377671681...24.08259.3981.01249218307.871.6114.2289.9Ride-along with HiRISEOK78961
    + +

    5 rows × 51 columns

    +
    +
    +
    +
    +
    pid = "U08_074276_1370_XI_43S133W"
    +
    +
    +
    ctx = CTX(pid)
    +
    +
    +
    ctx.download()
    +
    +
    File exists. Use `overwrite=True` to download fresh.
    +
    +
    +
    +
    ctx.meta
    +
    +
    volume_id                                                 MROX_4238
    +file_specification_name         DATA/U08_074276_1370_XI_43S133W.IMG
    +original_product_id                                4A_04_1179029700
    +product_id                               U08_074276_1370_XI_43S133W
    +image_time                               2022-05-31 22:06:07.945000
    +instrument_id                                                   CTX
    +instrument_mode_id                                              ITL
    +line_samples                                                   5056
    +lines                                                         49152
    +spatial_summing                                                   1
    +scaled_pixel_width                                             5.13
    +pixel_aspect_ratio                                             1.18
    +emission_angle                                                 5.34
    +incidence_angle                                               50.01
    +phase_angle                                                   55.16
    +center_longitude                                             133.38
    +center_latitude                                              -43.14
    +upper_left_longitude                                          133.3
    +upper_left_latitude                                          -45.66
    +upper_right_longitude                                        132.68
    +upper_right_latitude                                         -45.61
    +lower_left_longitude                                         134.04
    +lower_left_latitude                                          -40.68
    +lower_right_longitude                                        133.48
    +lower_right_latitude                                         -40.63
    +mission_phase_name                                              ESP
    +target_name                                                    MARS
    +spacecraft_clock_start_count                         1338502024:229
    +focal_plane_temperature                                       294.5
    +line_exposure_duration                                        1.877
    +offset_mode_id                                          196/215/209
    +sample_first_pixel                                                0
    +scaled_image_width                                            25.66
    +scaled_image_height                                          297.15
    +spacecraft_altitude                                          254.75
    +target_center_distance                                      3641.68
    +slant_distance                                               255.78
    +usage_note                                                        N
    +north_azimuth                                                276.51
    +sub_solar_azimuth                                             194.3
    +sub_solar_longitude                                          187.84
    +sub_solar_latitude                                           -21.42
    +sub_spacecraft_longitude                                     132.87
    +sub_spacecraft_latitude                                      -43.09
    +solar_distance                                          207097154.5
    +solar_longitude                                              238.12
    +local_time                                                    15.62
    +image_skew_angle                                               90.4
    +rationale_desc                           Landforms in Terra Sirenum
    +data_quality_desc                                                OK
    +orbit_number                                                  74276
    +short_pid                                           U08_074276_1370
    +month_col                                                       U08
    +Name: 132419, dtype: object
    +
    +
    +
    +
    ctx.edr_da
    +
    + +
    + + + + + + + + + + + + + + +
    <xarray.DataArray 'U08_074276_1370 EDR' (y: 49152, x: 5056)>
    +[248512512 values with dtype=uint8]
    +Coordinates:
    +  * x        (x) float64 0.5 1.5 2.5 3.5 ... 5.054e+03 5.054e+03 5.056e+03
    +  * y        (y) float64 0.5 1.5 2.5 3.5 ... 4.915e+04 4.915e+04 4.915e+04
    +Attributes: (12/19)
    +    BANDWIDTH:                  
    +    CENTER_FILTER_WAVELENGTH:   
    +    DATA_SET_ID:                "MRO-M-CTX-2-EDR-L0-V1.0"
    +    FILTER_NAME:                
    +    INSTRUMENT_ID:              CTX
    +    INSTRUMENT_NAME:            "CONTEXT CAMERA"
    +    ...                         ...
    +    START_TIME:                 2022-05-31T22:06:07.945
    +    STOP_TIME:                  2022-05-31T22:07:40.191
    +    TARGET_NAME:                MARS
    +    _FillValue:                 0
    +    scale_factor:               1.0
    +    add_offset:                 0.0
    +
    +
    +
    +
    !gdalinfo {ctx.source_path}
    +
    +
    Driver: PDS/NASA Planetary Data System
    +Files: /remote/trove/geo/planet/Mars/CTX/pds/mrox_4238/U08_074276_1370_XI_43S133W.IMG
    +Size is 5056, 49152
    +Metadata:
    +  BANDWIDTH=
    +  CENTER_FILTER_WAVELENGTH=
    +  DATA_SET_ID="MRO-M-CTX-2-EDR-L0-V1.0"
    +  FILTER_NAME=
    +  INSTRUMENT_ID=CTX
    +  INSTRUMENT_NAME="CONTEXT CAMERA"
    +  MISSION_NAME=
    +  NOTE=
    +  PRODUCER_INSTITUTION_NAME=
    +  PRODUCT_CREATION_TIME=2022-11-04T18:18:50
    +  PRODUCT_ID="U08_074276_1370_XI_43S133W"
    +  PRODUCT_TYPE=
    +  SPACECRAFT_NAME=MARS_RECONNAISSANCE_ORBITER
    +  START_TIME=2022-05-31T22:06:07.945
    +  STOP_TIME=2022-05-31T22:07:40.191
    +  TARGET_NAME=MARS
    +Corner Coordinates:
    +Upper Left  (    0.0,    0.0)
    +Lower Left  (    0.0,49152.0)
    +Upper Right ( 5056.0,    0.0)
    +Lower Right ( 5056.0,49152.0)
    +Center      ( 2528.0,24576.0)
    +Band 1 Block=5056x1 Type=Byte, ColorInterp=Undefined
    +  NoData Value=0
    +
    +
    +
    +
    ctx.plot_edr()
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    ctx.edr_da
    +
    + +
    + + + + + + + + + + + + + + +
    <xarray.DataArray 'U08_074276_1370 EDR' (y: 49152, x: 5056)>
    +[248512512 values with dtype=uint8]
    +Coordinates:
    +  * x        (x) float64 0.5 1.5 2.5 3.5 ... 5.054e+03 5.054e+03 5.056e+03
    +  * y        (y) float64 0.5 1.5 2.5 3.5 ... 4.915e+04 4.915e+04 4.915e+04
    +Attributes: (12/19)
    +    BANDWIDTH:                  
    +    CENTER_FILTER_WAVELENGTH:   
    +    DATA_SET_ID:                "MRO-M-CTX-2-EDR-L0-V1.0"
    +    FILTER_NAME:                
    +    INSTRUMENT_ID:              CTX
    +    INSTRUMENT_NAME:            "CONTEXT CAMERA"
    +    ...                         ...
    +    START_TIME:                 2022-05-31T22:06:07.945
    +    STOP_TIME:                  2022-05-31T22:07:40.191
    +    TARGET_NAME:                MARS
    +    _FillValue:                 0
    +    scale_factor:               1.0
    +    add_offset:                 0.0
    +
    +
    +
    +
    from planetarypy.hirise import RGB_NOMAP
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    obsid = "ESP_039983_1390"
    +
    +
    +
    rgb = RGB_NOMAP(obsid)
    +
    +
    +
    rgb.download()
    +
    +
    File exists. Use `overwrite=True` to download fresh.
    +
    +
    +
    +
    rgb.url
    +
    +
    URL('https://hirise-pds.lpl.arizona.edu/PDS/EXTRAS/RDR/ESP/ORB_039900_039999/ESP_039983_1390/ESP_039983_1390_RGB.NOMAP.JP2')
    +
    +
    +
    +
    rgb.download()
    +
    +
    File exists. Use `overwrite=True` to download fresh.
    +
    +
    +
    +
    rgb.read()
    +
    + +
    + + + + + + + + + + + + + + +
    <xarray.DataArray (band: 3, y: 20000, x: 2024)>
    +dask.array<open_rasterio-50355e7d99e2af88a185d9da4643f0cc<this-array>, shape=(3, 20000, 2024), dtype=uint16, chunksize=(1, 2024, 2024), chunktype=numpy.ndarray>
    +Coordinates:
    +  * band         (band) int64 1 2 3
    +  * x            (x) float64 0.5 1.5 2.5 3.5 ... 2.022e+03 2.022e+03 2.024e+03
    +  * y            (y) float64 0.5 1.5 2.5 3.5 4.5 ... 2e+04 2e+04 2e+04 2e+04
    +    spatial_ref  int64 0
    +Attributes:
    +    scale_factor:  1.0
    +    add_offset:    0.0
    +
    +
    +
    +
    +

    SPICE

    +
    +

    Archived kernels

    +
    +
    from planetarypy.spice import kernels
    +
    +
    +
    kernels.datasets
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pathMission NamePDS3 or PDS4Data Size (GB)Start TimeStop Time
    shorthand
    bcbc/bc_spiceBepiColombo42.32018-10-202023-06-21
    cassinico-s_j_e_v-spice-6-v1.0/cosp_1000Cassini Orbiter362.51997-10-152017-09-15
    clementineclem1-l-spice-6-v1.0/clsp_1000Clementine30.81994-01-261994-05-07
    dartdart/dart_spiceDART410.02021-11-092050-01-01
    dawndawn-m_a-spice-6-v1.0/dawnsp_1000DAWN386.42007-09-272018-10-31
    didi-c-spice-6-v1.0/disp_1000Deep Impact30.72005-01-122005-08-09
    ds1ds1-a_c-spice-6-v1.0/ds1sp_1000Deep Space 130.91998-10-242001-12-18
    epoxidif-c_e_x-spice-6-v1.0/epxsp_1000EPOXI31.02005-08-232011-03-01
    em16em16/em16_spiceExoMars TGO 2016410.42016-03-142023-10-01
    grailgrail-l-spice-6-v1.0/grlsp_1000GRAIL34.32011-09-102012-12-17
    hayabusahay-a-spice-6-v1.0/haysp_1000Hayabusa30.32005-09-112005-11-19
    insightinsight/insight_spiceInSight40.92018-05-052022-12-15
    junojno-j_e_ss-spice-6-v1.0/jnosp_1000JUNO348.22011-08-052023-04-08
    ladeeladee/ladee_spiceLADEE40.62013-09-072050-01-01
    lrolro-l-spice-6-v1.0/lrosp_1000Lunar Reconnaissance Orbiter3616.92009-06-182023-09-15
    mavenmaven/maven_spiceMAVEN456.62013-11-182023-10-01
    opportunitymer1-m-spice-6-v1.0/mer1sp_1000MER 1 (Opportunity)34.12003-07-072018-06-10
    spiritmer2-m-spice-6-v1.0/mer2sp_1000MER 2 (Spirit)32.62003-06-102010-05-03
    messengermess-e_v_h-spice-6-v1.0/messsp_1000MESSENGER344.82004-08-032015-04-30
    mars2020mars2020/mars2020_spiceMars 202040.62020-07-302023-08-31
    mexmex-e_m-spice-6-v2.0/mexsp_2000Mars Express310.62003-06-022023-08-31
    mgsmgs-m-spice-6-v1.0/mgsp_1000Mars Global Surveyor315.41996-11-062006-11-02
    odyody-m-spice-6-v1.0/odsp_1000Mars Odyssey335.22001-04-072023-07-01
    mromro-m-spice-6-v1.0/mrosp_1000Mars Reconnaissance Orbiter3324.72005-08-122023-10-01
    mslmsl-m-spice-6-v1.0/mslsp_1000Mars Science Laboratory30.62011-11-262023-07-29
    nearnear-a-spice-6-v1.0/nearsp_1000NEAR32.41996-05-302001-02-28
    nhnh-j_p_ss-spice-6-v1.0/nhsp_1000New Horizons31.62006-01-192019-12-30
    orexorex/orex_spiceOSIRIS-REx4424.72016-09-082023-10-02
    rosettaro_rl-e_m_a_c-spice-6-v1.0/rossp_1000Rosetta35.92004-03-022017-01-01
    stardustsdu-c-spice-6-v1.0/sdsp_1000Stardust31.91999-02-072011-05-01
    venus_climate_orbitervco/vco_spiceVenus Climate Orbiter41.92010-05-212023-01-01
    vexvex-e_v-spice-6-v2.0/vexsp_2000Venus Express35.02005-11-092015-02-06
    vovo1_vo2-m-spice-6-v1.0/vosp_1000Viking Orbiter30.11976-06-161980-07-30
    + +
    +
    +
    +
    +
    kernels.list_kernels_for_day('bc', '2019-01-01')
    +
    +
    ['ck/bc_mmo_sc_cruise_v01.bc',
    + 'ck/bc_mpo_magboom_v01.bc',
    + 'ck/bc_mtm_sc_cruise_v01.bc',
    + 'fk/bc_dsk_surfaces_v03.tf',
    + 'fk/bc_mmo_v13.tf',
    + 'fk/bc_mpo_v34.tf',
    + 'fk/bc_mtm_v12.tf',
    + 'fk/bc_sci_v12.tf',
    + 'fk/earth_topo_201023.tf',
    + 'fk/earthstns_jaxa_20230905.tf',
    + 'fk/estrack_v04.tf',
    + 'fk/rssd0002.tf',
    + 'ik/bc_mmo_mppe_v04.ti',
    + 'ik/bc_mmo_msasi_v03.ti',
    + 'ik/bc_mpo_aux_v01.ti',
    + 'ik/bc_mpo_bela_v09.ti',
    + 'ik/bc_mpo_mertis_v08.ti',
    + 'ik/bc_mpo_mgns_v02.ti',
    + 'ik/bc_mpo_mixs_v06.ti',
    + 'ik/bc_mpo_phebus_v06.ti',
    + 'ik/bc_mpo_serena_v08.ti',
    + 'ik/bc_mpo_simbio-sys_v10.ti',
    + 'ik/bc_mpo_sixs_v08.ti',
    + 'ik/bc_mpo_str_v02.ti',
    + 'ik/bc_mtm_mcam_v05.ti',
    + 'lsk/naif0012.tls',
    + 'pck/earth_000101_231220_230927.bpc',
    + 'pck/gm_de431.tpc',
    + 'pck/pck00011_bc_v00.tpc',
    + 'sclk/bc_mmo_fict_20170228.tsc',
    + 'sclk/bc_mpo_fict_20181127.tsc',
    + 'sclk/bc_mpo_step_20230917.tsc',
    + 'spk/bc_mmo_cruise_v01.bsp',
    + 'spk/bc_mmo_struct_v01.bsp',
    + 'spk/bc_mpo_cog_v03.bsp',
    + 'spk/bc_mpo_struct_v09.bsp',
    + 'spk/bc_mtm_cruise_v01.bsp',
    + 'spk/bc_mtm_struct_v06.bsp',
    + 'spk/bc_sci_v02.bsp',
    + 'spk/de432s.bsp',
    + 'spk/earthstns_itrf93_201023.bsp',
    + 'spk/earthstns_jaxa_20230905.bsp',
    + 'spk/estrack_v04.bsp']
    +
    +
    +
    +
    mkpath = kernels.get_metakernel_and_files('msl', '2020-01-01', '2020-01-05')
    +
    + +
    +
    +
    msl_ra_toolsref_v1.bc:   0%|          | 0/18432 [00:00<?, ?it/s]
    +msl_v08.tf:   0%|          | 0/205622 [00:00<?, ?it/s]/325632 [00:00<?, ?it/s]
    +msl_surf_rsm_tlmenc_2579_2713_v1.bc:   0%|          | 0/4276224 [00:00<?, ?it/s][A
    +msl_surf_hga_tlm_2579_2713_v1.bc:   0%|          | 0/2271232 [00:00<?, ?it/s]
    +msl_ra_toolsref_v1.bc: 100%|██████████| 18.0k/18.0k [00:00<00:00, 118kB/s] it/s]
    +msl_surf_rsm_tlmenc_2579_2713_v1.bc:   0%|          | 4.00k/4.08M [00:00<02:40, 26.6kB/s]
    +msl_surf_ra_tlmres_2579_2713_v1.bc:   0%|          | 4.00k/1.86M [00:00<01:14, 26.0kB/s]
    +
    +msl_surf_rover_tlm_2579_2713_v1.bc:   1%|▏         | 4.00k/318k [00:00<00:12, 25.1kB/s][A
    +msl_surf_rsm_tlmenc_2579_2713_v1.bc:   1%|          | 36.0k/4.08M [00:00<00:31, 133kB/s] 
    +msl_surf_ra_tlmres_2579_2713_v1.bc:   2%|▏         | 36.0k/1.86M [00:00<00:14, 132kB/s] 
    +msl_surf_rover_tlm_2579_2713_v1.bc:  11%|█▏        | 36.0k/318k [00:00<00:02, 131kB/s] 
    +msl_surf_rsm_tlmres_2579_2713_v1.bc:   1%|          | 36.0k/3.56M [00:00<00:28, 131kB/s] 
    +msl_surf_rsm_tlmenc_2579_2713_v1.bc:   2%|▏         | 100k/4.08M [00:00<00:16, 260kB/s] A
    +msl_surf_ra_tlmres_2579_2713_v1.bc:   5%|▌         | 100k/1.86M [00:00<00:07, 259kB/s] 
    +msl_surf_rover_tlm_2579_2713_v1.bc:  31%|███▏      | 100k/318k [00:00<00:00, 258kB/s] 
    +msl_surf_rsm_tlmres_2579_2713_v1.bc:   3%|▎         | 100k/3.56M [00:00<00:14, 258kB/s] 
    +msl_v08.tf: 100%|██████████| 201k/201k [00:00<00:00, 398kB/s] [00:00<00:08, 257kB/s] 
    +msl_surf_ra_tlmenc_2579_2713_v1.bc:   7%|▋         | 212k/3.13M [00:00<00:06, 440kB/s]]
    +msl_surf_ra_tlmres_2579_2713_v1.bc:  11%|█         | 212k/1.86M [00:00<00:03, 440kB/s]
    +msl_surf_rover_tlm_2579_2713_v1.bc:  62%|██████▏   | 196k/318k [00:00<00:00, 399kB/s]
    +msl_surf_rover_tlm_2579_2713_v1.bc: 100%|██████████| 318k/318k [00:00<00:00, 503kB/s]s]
    +
    +msl_surf_rsm_tlmenc_2579_2713_v1.bc:  10%|█         | 436k/4.08M [00:00<00:04, 800kB/s]
    +msl_surf_ra_tlmres_2579_2713_v1.bc:  23%|██▎       | 436k/1.86M [00:00<00:01, 799kB/s]
    +msl_surf_rsm_tlmres_2579_2713_v1.bc:  12%|█▏        | 436k/3.56M [00:00<00:04, 798kB/s]
    +msl_hbra_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 15.7MB/s]6kB/s]
    +msl_surf_rsm_tlmenc_2579_2713_v1.bc:  21%|██        | 884k/4.08M [00:00<00:02, 1.51MB/s]
    +msl_surf_ra_tlmres_2579_2713_v1.bc:  46%|████▋     | 884k/1.86M [00:00<00:00, 1.50MB/s]
    +msl_surf_rsm_tlmres_2579_2713_v1.bc:  24%|██▍       | 884k/3.56M [00:00<00:01, 1.50MB/s]
    +msl_surf_rsm_tlmenc_2579_2713_v1.bc:  43%|████▎     | 1.74M/4.08M [00:01<00:00, 2.89MB/s]
    +msl_surf_ra_tlmres_2579_2713_v1.bc: 100%|██████████| 1.86M/1.86M [00:01<00:00, 1.74MB/s]
    +
    +msl_surf_rsm_tlmres_2579_2713_v1.bc:  49%|████▉     | 1.74M/3.56M [00:01<00:00, 2.88MB/s]
    +msl_surf_hga_tlm_2579_2713_v1.bc: 100%|██████████| 2.17M/2.17M [00:01<00:00, 1.98MB/s]
    +msl_surf_ra_tlmenc_2579_2713_v1.bc: 100%|██████████| 3.13M/3.13M [00:01<00:00, 2.81MB/s]
    +msl_hflb_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 13.2MB/s]
    +msl_surf_rsm_tlmenc_2579_2713_v1.bc:  86%|████████▌ | 3.49M/4.08M [00:01<00:00, 5.62MB/s]
    +msl_surf_rsm_tlmres_2579_2713_v1.bc: 100%|██████████| 3.56M/3.56M [00:01<00:00, 2.91MB/s]
    +
    +msl_aux_v00.ti: 100%|██████████| 11.3k/11.3k [00:00<00:00, 29.3MB/s]
    +msl_hfra_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 13.2MB/s]
    +msl_hblb_20120731_c03.ti: 100%|██████████| 7.76k/7.76k [00:00<00:00, 4.88MB/s]
    +msl_hbrb_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 14.4MB/s]
    +msl_hfla_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 14.0MB/s]
    +msl_mahli_20120731_c02.ti: 100%|██████████| 7.70k/7.70k [00:00<00:00, 14.0MB/s]
    +msl_chrmi_20120731_c03.ti: 100%|██████████| 7.38k/7.38k [00:00<00:00, 13.2MB/s]
    +msl_hbla_20120731_c03.ti: 100%|██████████| 7.76k/7.76k [00:00<00:00, 14.0MB/s]
    +msl_hfrb_20120731_c03.ti: 100%|██████████| 7.77k/7.77k [00:00<00:00, 13.9MB/s]
    +msl_nla_20120731_c04.ti: 100%|██████████| 7.70k/7.70k [00:00<00:00, 19.9MB/s]
    +msl_mardi_20120731_c02.ti: 100%|██████████| 7.62k/7.62k [00:00<00:00, 13.4MB/s]
    +msl_ml_20120731_c03.ti: 100%|██████████| 7.72k/7.72k [00:00<00:00, 15.9MB/s]
    +msl_mr_20120731_c03.ti: 100%|██████████| 7.72k/7.72k [00:00<00:00, 4.39MB/s]
    +msl_nra_20120731_c04.ti: 100%|██████████| 7.71k/7.71k [00:00<00:00, 14.6MB/s]
    +msl_nrb_20130530_c05.ti: 100%|██████████| 7.72k/7.72k [00:00<00:00, 13.9MB/s]
    +msl_struct_v01.ti: 100%|██████████| 10.3k/10.3k [00:00<00:00, 16.9MB/s]
    +msl_nlb_20130530_c05.ti: 100%|██████████| 7.72k/7.72k [00:00<00:00, 22.5MB/s]
    +msl_lmst_ops120808_v1.tsc: 100%|██████████| 5.80k/5.80k [00:00<00:00, 13.8MB/s]
    +naif0012.tls: 100%|██████████| 6.70k/6.70k [00:00<00:00, 9.87MB/s]
    +mar085s.bsp:   0%|          | 0/89539584 [00:00<?, ?it/s]0:00<?, ?it/s]
    +msl_ls_ops120808_iau2000_v1.bsp: 100%|██████████| 8.00k/8.00k [00:00<00:00, 15.9MB/s]
    +
    +mar085s.bsp:   0%|          | 4.00k/85.4M [00:00<58:05, 25.7kB/s]<00:02, 25.6kB/s]
    +msl_76_sclkscet_refit_s8.tsc: 100%|██████████| 55.7k/55.7k [00:00<00:00, 178kB/s] 
    +mar085s.bsp:   0%|          | 36.0k/85.4M [00:00<11:22, 131kB/s] 
    +msl_surf_rover_loc_2224_2358_v1.bsp:   0%|          | 0/256000 [00:00<?, ?it/s]
    +pck00008.tpc: 100%|██████████| 111k/111k [00:00<00:00, 236kB/s] 1kB/s] 
    +mar085s.bsp:   0%|          | 84.0k/85.4M [00:00<07:02, 212kB/s]
    +msl_surf_rover_loc_2224_2358_v1.bsp:   2%|▏         | 4.00k/250k [00:00<00:09, 25.6kB/s]
    +msl_struct_v02.bsp: 100%|██████████| 102k/102k [00:00<00:00, 217kB/s] 
    +de425s.bsp:   1%|          | 100k/8.84M [00:00<00:35, 259kB/s] 
    +mar085s.bsp:   0%|          | 196k/85.4M [00:00<03:37, 411kB/s] [00:00<?, ?it/s]
    +msl_surf_rover_loc_2003_2127_v1.bsp:   0%|          | 0/344064 [00:00<?, ?it/s]131kB/s] 
    +mar085s.bsp:   0%|          | 420k/85.4M [00:00<01:54, 780kB/s]9M [00:00<01:45, 25.7kB/s]
    +msl_surf_rover_loc_2003_2127_v1.bsp:   1%|          | 4.00k/336k [00:00<00:13, 25.7kB/s][A
    +msl_surf_rover_loc_0000_2003_v1.bsp:   1%|▏         | 36.0k/2.59M [00:00<00:20, 131kB/s] 
    +mar085s.bsp:   1%|          | 852k/85.4M [00:00<01:00, 1.45MB/s]00:00<?, ?it/s]
    +msl_surf_rover_loc_2224_2358_v1.bsp: 100%|██████████| 250k/250k [00:00<00:00, 399kB/s] 
    +msl_surf_rover_loc_2003_2127_v1.bsp:  11%|█         | 36.0k/336k [00:00<00:02, 131kB/s] 
    +msl_surf_rover_loc_0000_2003_v1.bsp:   3%|▎         | 84.0k/2.59M [00:00<00:12, 212kB/s]
    +msl_surf_rover_loc_2003_2127_v1.bsp:  25%|██▌       | 84.0k/336k [00:00<00:01, 211kB/s]]
    +msl_surf_rover_loc_2837_2934_v1.bsp:   0%|          | 0/225280 [00:00<?, ?it/s]
    +msl_surf_rover_loc_0000_2003_v1.bsp:   7%|▋         | 180k/2.59M [00:00<00:06, 371kB/s] 
    +msl_surf_rover_loc_2003_2127_v1.bsp:  49%|████▉     | 164k/336k [00:00<00:00, 330kB/s] ]
    +msl_surf_rover_loc_2837_2934_v1.bsp:   2%|▏         | 4.00k/220k [00:00<00:08, 25.3kB/s]
    +msl_surf_rover_loc_2003_2127_v1.bsp: 100%|██████████| 336k/336k [00:00<00:00, 524kB/s]]
    +
    +de425s.bsp:  72%|███████▏  | 6.36M/8.84M [00:01<00:00, 9.82MB/s] [00:00<00:01, 131kB/s] [A
    +msl_surf_rover_loc_2837_2934_v1.bsp:  16%|█▋        | 36.0k/220k [00:00<00:01, 130kB/s] 
    +msl_surf_rover_loc_0000_2003_v1.bsp:  29%|██▉       | 772k/2.59M [00:00<00:01, 1.32MB/s]
    +msl_surf_rover_loc_2579_2713_v1.bsp: 100%|██████████| 294k/294k [00:00<00:00, 468kB/s] 
    +de425s.bsp: 100%|██████████| 8.84M/8.84M [00:01<00:00, 6.16MB/s] [00:00<00:00, 211kB/s]
    +mar085s.bsp:  14%|█▎        | 11.6M/85.4M [00:01<00:05, 15.1MB/s]0:00<?, ?it/s]
    +msl_surf_rover_loc_2837_2934_v1.bsp:  38%|███▊      | 84.0k/220k [00:00<00:00, 211kB/s]
    +msl_surf_rover_loc_2127_2224_v1.bsp: 100%|██████████| 206k/206k [00:00<00:00, 329kB/s] s]
    +msl_surf_rover_loc_0000_2003_v1.bsp: 100%|██████████| 2.59M/2.59M [00:01<00:00, 2.29MB/s]
    +msl_surf_rover_loc_2358_2482_v1.bsp:   1%|▏         | 4.00k/270k [00:00<00:10, 25.8kB/s]
    +msl_surf_rover_loc_2837_2934_v1.bsp: 100%|██████████| 220k/220k [00:00<00:00, 350kB/s] 
    +msl_surf_rover_loc_2713_2837_v1.bsp:   1%|          | 4.00k/333k [00:00<00:13, 25.6kB/s]
    +msl_surf_rover_loc_3192_3289_v1.bsp:   0%|          | 0/313344 [00:00<?, ?it/s]
    +msl_surf_rover_loc_2358_2482_v1.bsp: 100%|██████████| 270k/270k [00:00<00:00, 431kB/s] 
    +mar085s.bsp:  29%|██▉       | 24.9M/85.4M [00:02<00:03, 19.0MB/s][00:00<00:02, 131kB/s] 
    +msl_surf_rover_loc_2934_3068_v1.bsp:   0%|          | 0/423936 [00:00<?, ?it/s]25.4kB/s]
    +msl_surf_rover_loc_3068_3192_v1.bsp:   1%|          | 4.00k/355k [00:00<00:14, 25.6kB/s]
    +mar085s.bsp:  31%|███       | 26.1M/85.4M [00:02<00:03, 17.0MB/s]0:00<?, ?it/s]
    +msl_surf_rover_loc_2713_2837_v1.bsp:  25%|██▌       | 84.0k/333k [00:00<00:01, 211kB/s]
    +msl_surf_rover_loc_2934_3068_v1.bsp:   1%|          | 4.00k/414k [00:00<00:16, 25.7kB/s]
    +msl_surf_rover_loc_3068_3192_v1.bsp:  10%|█         | 36.0k/355k [00:00<00:02, 131kB/s] 
    +mar085s.bsp:  33%|███▎      | 28.5M/85.4M [00:02<00:03, 18.7MB/s][00:00<00:08, 25.7kB/s]
    +msl_surf_rover_loc_2713_2837_v1.bsp: 100%|██████████| 333k/333k [00:00<00:00, 527kB/s] ]
    +
    +msl_surf_rover_loc_2934_3068_v1.bsp:   9%|▊         | 36.0k/414k [00:00<00:02, 131kB/s] [A
    +msl_surf_rover_loc_3068_3192_v1.bsp:  28%|██▊       | 100k/355k [00:00<00:01, 258kB/s] 
    +mar085s.bsp:  37%|███▋      | 31.8M/85.4M [00:02<00:03, 17.1MB/s][00:00<00:01, 131kB/s] 
    +msl_surf_rover_loc_3547_3644_v1.bsp:  11%|█▏        | 36.0k/314k [00:00<00:02, 131kB/s] 
    +msl_surf_rover_loc_3192_3289_v1.bsp: 100%|██████████| 306k/306k [00:00<00:00, 485kB/s] 
    +msl_surf_rover_loc_2934_3068_v1.bsp:  20%|██        | 84.0k/414k [00:00<00:01, 211kB/s]
    +msl_surf_rover_loc_3068_3192_v1.bsp: 100%|██████████| 355k/355k [00:00<00:00, 565kB/s]
    +
    +msl_surf_rover_loc_3423_3547_v1.bsp:   0%|          | 0/391168 [00:00<?, ?it/s]212kB/s]
    +msl_surf_rover_loc_2934_3068_v1.bsp:  43%|████▎     | 180k/414k [00:00<00:00, 371kB/s] 
    +msl_surf_rover_loc_2482_2579_v1.bsp: 100%|██████████| 208k/208k [00:00<00:00, 332kB/s] 
    +msl_surf_rover_loc_3423_3547_v1.bsp:   1%|          | 4.00k/382k [00:00<00:15, 25.7kB/s]
    +msl_surf_rover_loc_3547_3644_v1.bsp: 100%|██████████| 314k/314k [00:00<00:00, 501kB/s] 
    +msl_surf_rover_loc_2934_3068_v1.bsp: 100%|██████████| 414k/414k [00:00<00:00, 529kB/s]
    +msl_surf_rover_loc_3423_3547_v1.bsp: 100%|██████████| 382k/382k [00:00<00:00, 606kB/s] ]
    +msl_surf_rover_loc_3289_3423_v1.bsp:  10%|█         | 36.0k/356k [00:00<00:02, 131kB/s] 
    +mar085s.bsp:  57%|█████▋    | 48.5M/85.4M [00:03<00:02, 16.5MB/s]0:00<?, ?it/s]
    +msl_surf_rover_loc_3289_3423_v1.bsp:  24%|██▎       | 84.0k/356k [00:00<00:01, 212kB/s]
    +msl_surf_rover_loc_3778_3902_v1.bsp:   1%|          | 4.00k/354k [00:00<00:13, 25.7kB/s]
    +msl_surf_rover_loc_3289_3423_v1.bsp: 100%|██████████| 356k/356k [00:00<00:00, 566kB/s] ]
    +
    +mar085s.bsp:  64%|██████▎   | 54.3M/85.4M [00:04<00:01, 16.9MB/s][00:00<00:02, 131kB/s] 
    +mar085s.bsp:  67%|██████▋   | 56.8M/85.4M [00:04<00:01, 19.1MB/s][00:00<00:02, 131kB/s] 
    +msl_surf_rover_loc_3778_3902_v1.bsp:  24%|██▎       | 84.0k/354k [00:00<00:01, 211kB/s]
    +mar085s.bsp:  69%|██████▉   | 58.9M/85.4M [00:04<00:01, 20.0MB/s][00:00<00:01, 210kB/s]
    +mar085s.bsp:  70%|███████   | 59.8M/85.4M [00:04<00:01, 16.5MB/s]00:00<00:00, 371kB/s] 
    +msl_surf_rover_loc_3778_3902_v1.bsp: 100%|██████████| 354k/354k [00:00<00:00, 557kB/s] 
    +mar085s.bsp:  73%|███████▎  | 62.7M/85.4M [00:04<00:01, 19.6MB/s]
    +msl_surf_rover_loc_3644_3778_v1.bsp: 100%|██████████| 363k/363k [00:00<00:00, 462kB/s]
    +mar085s.bsp: 100%|██████████| 85.4M/85.4M [00:05<00:00, 15.3MB/s]
    +
    +
    +
    +
    import spiceypy as spice
    +
    +
    +
    spice.furnsh(str(mkpath))
    +
    +
    +
    mkpath
    +
    +
    Path('/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/msl/msl_v34_200101_200105.tm')
    +
    +
    +
    +
    !cat {mkpath}
    +
    +
    KPL/MK
    +
    +   This meta-kernel lists a subset of kernels from the meta-kernel
    +   msl_v34.tm provided in the MSL-M-SPICE-6-V1.0 SPICE PDS3 archive,
    +   covering the whole or a part of the customer requested time period
    +   from 2020-01-01T00:00:00.000 to 2020-01-05T00:00:00.000.
    +
    +   The documentation describing these kernels can be found in the
    +   complete MSL-M-SPICE-6-V1.0 SPICE PDS3 archive available at this URL
    +
    +   https://naif.jpl.nasa.gov/pub/naif/pds/data/msl-m-spice-6-v1.0/mslsp_1000
    +
    +   To use this meta-kernel users may need to modify the value of the
    +   PATH_VALUES keyword to point to the actual location of the archive's
    +   ``data'' directory on their system. Replacing ``/'' with ``\''
    +   and converting line terminators to the format native to the user's
    +   system may also be required if this meta-kernel is to be used on a
    +   non-UNIX workstation.
    +
    +   This meta-kernel was created by the NAIF node's SPICE PDS archive
    +   subsetting service version 2.1 on Fri Dec  1 09:03:32 PST 2023.
    +
    + 
    +   \begindata
    + 
    +      PATH_VALUES     = (
    +                         '/home/ayek72/mnt/slowdata/planetarypy/spice_kernels/msl'
    +                        )
    + 
    +      PATH_SYMBOLS    = (
    +                         'KERNELS'
    +                        )
    + 
    +      KERNELS_TO_LOAD = (
    +                         '$KERNELS/lsk/naif0012.tls'
    +                         '$KERNELS/pck/pck00008.tpc'
    +                         '$KERNELS/sclk/msl_lmst_ops120808_v1.tsc'
    +                         '$KERNELS/sclk/msl_76_sclkscet_refit_s8.tsc'
    +                         '$KERNELS/fk/msl_v08.tf'
    +                         '$KERNELS/ik/msl_aux_v00.ti'
    +                         '$KERNELS/ik/msl_chrmi_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_hbla_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_hblb_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_hbra_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_hbrb_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_hfla_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_hflb_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_hfra_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_hfrb_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_mahli_20120731_c02.ti'
    +                         '$KERNELS/ik/msl_mardi_20120731_c02.ti'
    +                         '$KERNELS/ik/msl_ml_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_mr_20120731_c03.ti'
    +                         '$KERNELS/ik/msl_nla_20120731_c04.ti'
    +                         '$KERNELS/ik/msl_nlb_20130530_c05.ti'
    +                         '$KERNELS/ik/msl_nra_20120731_c04.ti'
    +                         '$KERNELS/ik/msl_nrb_20130530_c05.ti'
    +                         '$KERNELS/ik/msl_struct_v01.ti'
    +                         '$KERNELS/spk/msl_struct_v02.bsp'
    +                         '$KERNELS/spk/de425s.bsp'
    +                         '$KERNELS/spk/mar085s.bsp'
    +                         '$KERNELS/spk/msl_ls_ops120808_iau2000_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_0000_2003_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2003_2127_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2127_2224_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2224_2358_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2358_2482_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2482_2579_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2579_2713_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2713_2837_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2837_2934_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_2934_3068_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_3068_3192_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_3192_3289_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_3289_3423_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_3423_3547_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_3547_3644_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_3644_3778_v1.bsp'
    +                         '$KERNELS/spk/msl_surf_rover_loc_3778_3902_v1.bsp'
    +                         '$KERNELS/ck/msl_ra_toolsref_v1.bc'
    +                         '$KERNELS/ck/msl_surf_hga_tlm_2579_2713_v1.bc'
    +                         '$KERNELS/ck/msl_surf_ra_tlmenc_2579_2713_v1.bc'
    +                         '$KERNELS/ck/msl_surf_ra_tlmres_2579_2713_v1.bc'
    +                         '$KERNELS/ck/msl_surf_rover_tlm_2579_2713_v1.bc'
    +                         '$KERNELS/ck/msl_surf_rsm_tlmenc_2579_2713_v1.bc'
    +                         '$KERNELS/ck/msl_surf_rsm_tlmres_2579_2713_v1.bc'
    +                        )
    + 
    +   \begintext
    + 
    +
    +
    +
    + + +
    +
    + +
    + + +
    + + + + \ No newline at end of file diff --git a/tutorials/pdw_2023.html b/tutorials/pdw_2023.html new file mode 100644 index 0000000..37628ac --- /dev/null +++ b/tutorials/pdw_2023.html @@ -0,0 +1,1472 @@ + + + + + + + + + + + +planetarypy - On the way to a core PlanetaryPy Package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + +
    + + +
    + + + +
    + +
    +
    +

    On the way to a core PlanetaryPy Package

    +
    + + + +
    + +
    +
    Author
    +
    +

    Michael Aye

    +
    +
    + +
    +
    Published
    +
    +

    June 26, 2023

    +
    +
    + + +
    + + +
    + + +
    +

    What is this?

    +
      +
    • PlanetaryPy organization is community effort to +
        +
      • develop a core Python package for planetary science
      • +
      • help other planetary science Python programmers to disseminate their work
      • +
    • +
    • This talk is about the core package status only.
    • +
    +
    +
    +
    +
    +

    Core package work plan

    +
      +
    • I am since long working on a core package draft.
    • +
    • Nothing is especially clever, the structured unification is the clue!
    • +
    • Shall be submitted (done?) to the community members for review.
    • +
    • After successful review open for public pull requests and hackathons.
    • +
    +
    +
    +
    +

    Core package focal points

    +
      +
    • Easier access, download, and local management of +
        +
      • PDS data
      • +
      • SPICE kernels
      • +
    • +
    • Removing need to learn various web interfaces for different data
    • +
    • Working easier with collections of PDS data
    • +
    • Easy basic SPICE calculations with human readable I/F
    • +
    • Some web and time related utilities
    • +
    +
    +
    +
    +
    +

    PDS Indexes

    +
    +

    PDS Indexes

    +
    +
    +
      +
    • PDS Indexes contain useful meta-data for PDS datasets
    • +
    • planetarypy provides access to these via a config file +
        +
      • pull requests to config file will add more findable indices!
      • +
    • +
    • config file tells planetarypy where to find index
    • +
    +
    +
      +
    • planetarypy downloads index file and
    • +
    • stored as parquet file, ready for pandas based analysis.
    • +
    • tells user when new index is available
    • +
    +
    +
    +
    +
    +

    Example use

    +
    +
    from planetarypy.pds.apps import get_index
    +
    +df = get_index("cassini.iss", "index")
    +print(df.info())
    +df.head(3)["FILE_NAME IMAGE_MID_TIME IMAGE_OBSERVATION_TYPE".split()]
    +
    +
    <class 'pandas.core.frame.DataFrame'>
    +RangeIndex: 407299 entries, 0 to 407298
    +Columns: 140 entries, FILE_NAME to STANDARD_DATA_PRODUCT_ID
    +dtypes: Float64(70), Int64(20), datetime64[ns](7), string(43)
    +memory usage: 470.0 MB
    +None
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FILE_NAMEIMAGE_MID_TIMEIMAGE_OBSERVATION_TYPE
    0N1454725799_1.IMG2004-02-06 02:07:06.458OPNAV
    1N1454726579_1.IMG2004-02-06 02:20:06.362OPNAV
    2N1454727359_1.IMG2004-02-06 02:33:06.397OPNAV
    + +
    +
    +
    +
    +
    +
    +

    Instrument data

    +
    +

    Instrument data

    +
      +
    • Meant to serve as basic data access, read, and access classes +
        +
      • to be boosted in the future by the GOAT PDS reader pdr by Million, Inc.
      • +
    • +
    • config file controls what data levels are accessible +
        +
      • and how they are stored locally
      • +
    • +
    • currently CTX, HiRISE, UVIS, CISS are supported (Diviner in the works)
    • +
    +
    +
    +

    Example use HiRISE

    +
    +
    from planetarypy.hirise import ProductPathfinder as PPF
    +
    +ppf = PPF("PSP_003092_0985_RED")
    +
    +print(ppf.jp2_path)
    +print(ppf.homepage)
    +print(ppf.abrowse_path)
    +print(ppf.nomap_thumbnail_path)
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.JP2
    +https://uahirise.org/PSP_003092_0985
    +EXTRAS/RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.abrowse.jpg
    +EXTRAS/RDR/PSP/ORB_003000_003099/PSP_003092_0985/PSP_003092_0985_RED.NOMAP.thumb.jpg
    +
    +
    +
    +
    +

    Example use CTXCollection

    +
    +
    from planetarypy.ctx import CTXCollection
    +
    +coll = CTXCollection.by_month("F01")
    +print(coll.n_items)
    +print(len(coll.get_corrupted()))
    +
    +
    1321
    +35
    +
    +
    +
    +
    +
    +

    Archived SPICE kernels

    +
    +

    Archived SPICE kernel sets

    +
    +
    +
      +
    • NAIF offers archived mission kernel sets for 33 missions:
    • +
    • Kernels can be subset by time window using Subset link.
    • +
    • planetarypy offers programmatic wrapper around subset feature.
    • +
    +
    +
      +
    • Zip file unpacked.
    • +
    • Kernel files stored locally and logically.
    • +
    • Meta-kernel edited appropriately and immediately loadable.
    • +
    +
    +
    +

    +
    +
    +

    Example use

    +
    +
    from planetarypy.spice import kernels
    +
    +kernels.datasets.drop("path", axis=1).head()
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Mission NamePDS3 or PDS4Data Size (GB)Start TimeStop Time
    shorthand
    bcBepiColombo42.32018-10-202023-06-21
    cassiniCassini Orbiter362.51997-10-152017-09-15
    clementineClementine30.81994-01-261994-05-07
    dartDART410.02021-11-092050-01-01
    dawnDAWN386.42007-09-272018-10-31
    + +
    +
    +
    +
    +

    Two main user functions:

    +
      +
    • get_metakernel_and_files +
        +
      • will check if the kernel files are already locally available
      • +
      • if not, download kernels
      • +
      • returns the path to the edited meta-kernel
      • +
    • +
    • list_kernels_for_day +
        +
      • will only list kernel filenames valid for the given day
      • +
    • +
    +
    +
    +
    +
    +
    +

    Generic kernels for illumination calculations

    +
    +

    Generic kernels

    +
      +
    • Manages a minimal set for basic illumination calculations
    • +
    • Currently slightly biased for Mars but many other bodies work
    • +
    • Kernels are automatically downloaded and loaded when needed.
    • +
    +
    +
    +

    Example use

    +
    +
    from planetarypy.spice.spicer import MoonSpicer
    +
    +moon = MoonSpicer("2022-02-22")
    +print(f"Sol. const: {moon.solar_constant:.1f}")
    +moon.set_spoint_by(lat=0, lon=0)
    +moon.aspect = 180
    +moon.tilt = 30
    +print(f"Irradiance on tilted surface element: {moon.F_tilt:.1f}")
    +
    +
    Sol. const: 1388.4 W / m2
    +Irradiance on tilted surface element: 412.5 W / m2
    +
    +
    +
    +
    +
    +

    Come to the demo session!

    + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tutorials/pdw_2023.html.pptx b/tutorials/pdw_2023.html.pptx new file mode 100644 index 0000000000000000000000000000000000000000..ef78ddb6b382da69bb2d8911e19eeb000be9157d GIT binary patch literal 188107 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

    ClXXENGRP^nsJR0HP@iXBzG`k8XDi8 z0VNd1Ayf(+Af!+^ek*oys<^CV5yc(oHOPBbtTxSU@Uu!qw225Utqm1%)9>`19Hy3IeaCwwu4y3}dvf~#x<~C9o)FZ=x zLkUYSos(IW0b zjaQZ;7>i>sGD`_(fqf2|;yZaK_a-@>q-xagWyNwPaOi-aGKrkA`Bz56_jEOXTp)Wx zMFuMerL0t$9kl0z9Jyj0EolrOn<9U6d_AT*K;g9E`j@raD|)r;fpVaXqv|6K1NOAe z4!a$U{qM&c1L9zay!ElL(~fYSY3N8imtsS-7HS6I5s-X^n| zlc6_S0iDW@6#2~?=g$x5G-VM?-P`C-`(bOLV~;yW*h)F!<~ka{n6RHSmRbR3kuJ6d!)TNJi}Q=)eo@ zi+jF0o*$68cH8eNOZ(ZMAAHheBYlP@r4~x`uJeAu4F5e`{SwjBt72?{E8g>4zb%|) zE_HugV*PTfm}nM6uyfcgMmmnu091@VJVN!mMpDMob*peVfHv!!VZ2krVB_KI0rZXO zNwlTZiQ{-)WY_C0y`;BJ1P(1o1)wb@UJtjp28P=!D9ou|B#M=XMP{A~^b zSSQ(UaIekmy0NHoR!n`B;+Vd^LLgHjyk5q3{J(Ezd!ST7h#Z&na!c|fu;a6mu-(M* zWz72g{m&r2h4}Fpvy$oj>WQ0w0kjJ`C$x15A>QwAN zOIQC47M)ymz_RtvBujv39n2DztQ9frHf=Cz@tG>mXFvZ>3TJ^R9Co+){y*5Q&SS5q z62?GMSPQ~{_*^d<->l_Clb{^#O}Fr->@pr8&B1fhUyB27(}d64$*%u}{5JBn6wybP z{|WhfUucCm6VtkJlZVpDT)9(_B8itEP{s!1k_)^LX6l*OPa%JIZ(ghrB!U4JfHF$K7H zNxe1|&*SAU8A`->hXtdag5m6)wkF_X1U*v#odyP0AT%C9%KaeDV@rarB|{DF)k-XG zQ@u^faIelP2W0T{`YJM;(=|Q4S@IlbM%9{;RV?8E;7N1VUXzp@3)+ zkp~6_ugaAi`v-9V)XiRhsIc93{zEY610d~J9FQs#G|p{0e5}c?t>t99u#Y)}2H`#6 zkH~!7ci_7&(BQMyIg=xs(VzH@^I#bwAvo(Ah;Ep1 zg1oQ{B^iHQ(dnaa**k<@{H8E>`&x8h;G~|n4Y`hIIp%+^TrMDX0(a&AxCIE%aY;p% zCh!~a<#rw)i^OH|*aoiFjqrTRybHeWw`z@nfa3;lnkfY0i8-DA`f1;l>e%a)mZ6Ca z@7ww!J0JQc*_V>N&#PLySz$idSY;BodXN$-$yO+flG_%Jwoa<=-io;U{7w z|8eF+2(Pr<@0Qh2D+XM|h2`IlEIPe;XvvlO>y967UM2iLJU>E$@E(Ce3O;8FnyxQi z67l>a!X#Y%$O|>qngvdJ!bkP5KETGwlNjx^PrTXnO@6{6c>VCs zy^oxZ7%}fTeGS-?U`zBD%EG(&IVc-$aFHuK8>9ZFDNq^l-LI-R^`qYzcMjpD%bJ(3 zOS>n>q=4DX@O1iKyrfx7749mhNRaMTx%1(Ai79S{B^Ne>&E+40`g${#iS!;b%Uidz zbyvhu5tY9~1umxT`PwA0x1`zC;~?MhelK#KZfPb*tofXq%%e1keMD0(R_X-Z=~9hT_3fli|4 ze^x~};Q2F+WobS7ke2I@N&nTCx-%+(l#M9Wkzjw_!FviusKAB(z;EyLmr91WMw?Iu zwa``G_VtX_)Wz+z+3|O(ua{%tfoul9jPX-N5J#6gyk0H$t|B~mS#sVsH?3op2cqvK z3S3g0H9Sb48uG8`|MjT)fHS<=Q&cNswJxbn>5lygaZ zO;-DC*RAdVDk;vwTfv%V)NOLVJFDbft#ghJdJCGQ+fbc_ie1{B0iCfiQcq!h)3@rS zGodjHSjlGQTF~1<$8(HVz`^wx8sog|GP?`at0LcZDbEiBnisD#zA5YFiV4Hn6b&wm zD(!!Cbrt@05}a@Ct}>pQRe0e!2W2n+cR;hq9`s!PKf<21lG726@JZ_BlBxlK_G80y ztDUXwZHx9HP`C7Y)Ml@~YM!09?rAiTiyL8Mx!#pGeX7cg%w4~{6am~+W2i>kU^UcA z${G@jiP44XZ=`$6q>C8yk0uHrY7Tw~!h!@iEYGu<)}pvKRO6+kDKsbLQY`dqyz57v z>~QW_zbKg_TC`i3c&Zo-de-d&3i3uBTzpu6yHH6ICX8ySnfuvJBmc^W&93F@)zOxF z<9VJHRSJ~_qQAr{+D4g5_IVa>7awQp&|Zv}%CafU2vhQYf{0&wgmyCeG#t$%JeY~8 z%?5u+ac(QAD)M2iim$qvA-gdkXshKEt*c5ZaR4j3tR~bTpBt$WOUZ@u6s?W^Ba!K+ z)eN|BrtvPW&*E(PR%TYc6R|{^Nr?O<4W5{o$AE{RtQTs^B-9mlN5)6tib0NTKsLf3 z%=#zl@jt8Dm*+%>BMeEuST!3!`}THm1>JV&Po!9u{1`=rzM)wYdGSZha*j-%i3UxA z`OIj9jb7K)z^Mb#W?fWBrm$}?VkkRV9VjD?gP!vc1$m=a(^tspCrk<);nQe^tSG{S z03|@&K$I-HcIb8U?U?FcMon`uaR*srzcnc%+77f_7l;jf@4@y^se|pcK9LYl`<}pG zX$7}4>)Pwb#*&YxRP3(D-W79));Z5h$FgAM2)(NcK{~QkWBqoFgs)@2@3zQG@-rg% zrNBByb@fA#t(S?#@?V1DOnaSe)|*rvT@%81j7}g*~@_t88Uq7ukDUc4+4CTyA9e9peueIy==$P*fQjo zR;T0lP1MuzbwA#bSuFkGmt%4^(`wwK=Z5+rE;pm=wkIp@Wc?+KE2_=i??WRhbcpo6 zagrQe%3Sf)be+F3R)Dp% zrgq~ii-&kC#VTjrSuN-ur^WdwGSxuK>gh+_yR(A%41dD!L3S1F3X-g4mraRD+!_DC zknXdclUq^ax$C91Gg+K!er1|zsylBAl+yN(O7ux>wD0H}NoTdVcnAIR?_EdPGdIT<0tLvTnbt-$+ z8duXVbsxdn_V;J6NrWe_CC&c#y;$*h_ogY2X8nk88Uwz`Ye9n$zRVW$FZ&&2SS!w5 zjV&22msV9L0?lkJI(e_k)^d|q6h<%p3mxW($*s1TQky!|n!x4lZ zfI!+>lG-eGI5eiXt^zvz{$`jHdhxpO zzS9urs6~83$nKZ0_d`{Wj$xv4_4gec^=;z6gbvMjVLl(qTW`2Y2#AjwEGC|UJkLOW z*?en88!!}m9CoJb#Z1%UDZ-OxEIo@sJh2OE8_<-sZQdEpG@s2Q?3cmd$P1yr%cxj3 zd)s<*9*+>dnDlG^P=+ke1wJ=jKi@sRBt9P$m07oy>OF>= zrwt4C-B6PCiM!~ooPrvcEqTA3jbSmANY{w>`zm{tlZiIr$LcfTEt&E~LaOyX>OmvxQFSS!7a zIw)PPf4gbhUv>hQ7b@Z$Iw8*(xw|n-r`@Xt=l^PAw7!cMovQLV+HKao%sAcsFp{Yg zYR2;PH&tps|Mkh_x&<8FMfK9`juC;i^qu9#W0e4Cmjc(-XZ^OK-muo7w95|ZEnZBN zQ_bXOVCUHKy9Aj0#L;1RCWej?7Wo!uyv0L$xw933$rI}FQdiJVz|jZ&7n>f!dHDFq z1c3XX0kPCScTCZBZ{YBspMrw7zK3?p|QUL#o*qtI=T{CXRB$*6MV@8Hl zq>3c@2=^UU{l)A$kXrx0M_26Yh25K&6uJKodtVvUcK2>upoO+rTPW^OXp1`p2yO9F zq|o9nL4!NNN`d0VU0U4Ty|@K;3+@Cb_)Yr0|G8)8%sn&r`}szgkl(ZSv!3;=wfANx z6CHx(ybt5Cvc%Y?vKotvaciZL7NhL`!+AU1B{9a@iC?`ncu;thnKiJ_FuN3@dF_yb zx>yi7v_Nv6ST&TFo+QMxy8b(~+Qy8C=a0})w1bTX@d4?kV@j11zIJ-(#POFBGB6OZ zAuGG34L*(B?8=A-kjKBh^`4s7m*`+QS*KJ>9xayeS2(-5V%QfqRpBuI^DjH-s2fYo zD`M>*7PvHw-Lte3+>EpZBu7med_;q|cn-gpM_MjE$Y!sxxehVUW6$>u@>&HdxYzSC z{!im-1B{!G-=4!~ylU^enlxJcv#4FZeYIGO%94v)tXfKIUg+yO%QeZv(yRG<7TStw z_xd#sEb(nYw3RwSgm)cF{$csnlV*e&l|0@jZLph-f z(IW%ze|Y_IeVoZ4^iJ3|@GzSZCb`IFYohaVOos$W%Vb~!5g z(_D?_Wjqqid?YI(#W2x?(!sA^Jg86?wrLNm3KoxeE=ZD{Mapf=+4t??VanYJgZp~# z=!RMZS{fik&GL=1!apmrR{TCqyUSgL8WmI^$M}{%IFqcr?yhe!Oy5RE;RNnlN!8H2 zIllGP{8A|~wl8uL{By*2{W>E2oIj&lY7?1C6ij>Of0bRzp+!2kyh#+;uS2^1=8ol8 zq0z6Oz5X|qgbnB-B*;`&Fmd<>tH}R;WTMdwh+1d2Yw)8&f;GVFW|AYSil;-tss!=6 z0IBO^SC+ykjIgCHPBOuux`;HMjR=SzKI;dJ>M>-ewF3V*-6kcp#Tas;XWd;nZf z)5E-8J24zM+Tlu{`l)jMxZyuHr@G1_!A$ZlGy4dB02Yk4=a^#k4KU#e{_XS2be zSAR+&i!PXMy3U~F&8~TXzE>88q3-j$6YLQ95QbX6JYOz7sIGoHY1aLA!hKdH>>K^H za|L^>S5Na&{j7mOLD7vaE#!pP!;H&!#x||ns`{(nOm4FLz3aFAYo}l>qqXM)^sDRY z>Q^Cg>hHL!3@UFT=ElrcV)As-CQP&Nh3O7Nyi!FiSg$MSzF8stg*Y$0w_h3=q^cG| za))1+y*A@@2V$yY+=?sMs3-xBSx`8ol}BjD3Kj@bX@j7eBGW2Rd%-FXdn$Z?y9_Nt zE;y6I2PbjjKy)-z2YwL$PV5Icaza)mcUm3SP~sQ8n~Ut(XBtk_DlDxxJ12tV`{ziO zM?TnX)MAx(FW6eK^x&~}6SWErPGQYsbZ7`5*;E=>O<+RO##_8*>H0^J7AsQdX!yt7j0>sRu7 z0K^vD`uyGcoY_IPPbfnSX~gBS6)#Nvj@2369EJ zM|DvchId?np1$vwJmnnynPRq9)WK)^T&A%vSd0s;7+O3l8)fyU?bSm#EpGJ|BH3WB z+vWZ14f|MtqehZU=>afj^TPtM$v*7;8zl=~gaf!PrV|@Bmas)fBYm4{-GDpt_~&nQ z!&(^=bXKytYICZjTac=)IaS6Z#3XzC08uElUNsX}l@LCtvv2BI&g^Ojabl^++>~Z< zL}0NW1#&>8iZrv<-?KOYv`-%p7rhAHemz2RW)4XLiTNe3lgb?AnZ$j(QEURk`MrGk5y>XH zy$On;f7#@_0TXWQ>t_`IvI$Uj<_BXvs{#J2p2*$^+T)3#xmu)iRQP){?DASEpcYoyuHdh^-ke z3c20%g(D}h?!IwG!v;U49?enSlb{LM;=&>7N;jKH|CuHibwT@E6H~1+R0*==CX#^b z|8gpfJ~Z<6Gl73+fubK>h$b?twVY8Ab5LSPp)Puk0jkjCo$quttmpKf?4SO&8;fm zX*62qLdb$FR<9&$ex6?m;81s)x`_@+n3k^1U z<0AZI<;U-ssB|>QgLouwKW5fip(3vnLxWWJC4S2fZ78+7wde*?8~m7+%mn)pwk=!4DgaKnt= zDDFMp)BESkXkO)ygHY$_XHK*-vTBqwwZX=D&o-L>y)a7a?O7}?S*x?&loKX(fZd-H z5&k>nSb!W^-83hD#p){p9YbA@>gh81Th?uT@R7+l^$vH?YCEpZImMg!4uaKH%_EvoTW-3c=YWPTI2fH)qd-|y1@B{jvpr>A<-vFL-TtvGBNf-|?B8hmvn+6Amy$|?yoh7A+O*UnZ^ z!7Q$(+s1cJCxCtBd4#fh--7(_+rio@g{eUF_rH-@{8{_nFpw8H zA%=3xuxdDJLcaA2k&%9;8UBX}iA~QRncFbP`WQ&*VcEaw@2&G1Do1J#9(1SVWzThJ zijax7zq-BFVEJ)6dEQv&nV+?Zd|G)`6mZqJnoIjV3!=jDGQbkqL0J~iI4rI=gk$-% z-DK;gqQ<;Zjk@vR+@`K~H-fRRH09}SWRN^VZ#8DIWOa6TdCfz9G|*nXRVP2b3-i+ueF1)g_)?tqn*3RE3 z5I%l^(l{NsWU_@Qjbrf?tH$H6#?e|F=|O6o?0=s1u7X|B7pZXwh0ujaBBNT%yGYau z5fvV1ANY1dq16EaM7jsx_-FeFs@@R`5)U1V*VIhQ%@+zq5;CWXa}m`CynbeZ+C@qH zGw%5lweHJc)#1$Y*UvQHq%ZzJm-$x;%e3#ri$3mE8jwjQr2L5-RA|}S5SCb~p{{3r z>xT!3ez9jE%=YUQ(M&5((33-UKM!qCKWkH?0#AvqNCmx8prayOkS6@`9F=czHFLh7 zsETILT;Y2CcT~iDipb`&_U{a?t-2Pb{xEu@5-nHkBqRTAa7gWV^Hi5oxTlTIihB}=bTP^73nfJyKPUxC3Ob$qF3^Qj2= z^N%V;?Wp@Oi-bQv#e>|xn!D)$CBAl7C<5`U0w!%l4UO6198G>z8-? zuZ8*nSNps71i5_Q^!!nz|36d}=|92g^(-arX#Wl z6wZQ)nR2Orzl%hj2Kn$nHKU}PwP;7oOjzwPHE$p?1CphN%9 zp@x-*XJUlXT>o?^SuX$XLtE)s1L=7N^TaiV=>dkjhvB0CeSZx(al)w`7UF-Ap_82M ziA09vzsTr1Bmv^}D&YhsiOZqjp3sp7I|^`lA)Gq=!vOX4>5*6sJSr5PyQ5q}d;aRV zV1jY{&osUNQeQ6#ReLv5&(YdO<(frC>2XIP2!!vR{om6aR6?^#{cRb@`a5)aQS$t+ zX}cjpfI*g%!RiICoZSmc&cN@0bUj(-vB1#(JlkyHBMGmYERT=s}BSzY2wud8fil)R0$BaPgr@sS_I*Sq3| zal}--c0Nve)IpGts}zY^rj#L(311FGCMvZjIyxrVr6l(H=r9j@LYPmB_8>PU_*n5` z^zTjKYJ}-awxx)Oo(x*`k46Wb)_V+0M;VR`BG0|(erZ_3X;V95o5$TsQKMw>95ywO zMNQc#e@~Inkq+y{Dk&W%;$|y(mgXtyXoWZ$@-w|(za#u_FSVW$KI^l4c&Pn!KHG%h ze|)nv;3-mQI2>$ktL6_%R{bJR0eZQyeTKH1p{2*;L zGPjnYtHX4~G=%KlhOVo__)`cyS%!F^Ev_Vbo9&|u)~9cSF+x6St*`}Q{^tEht&~(lX|Fy*qcYxU=4*88iRoVmsen-ovrJerMcnLA!#c zby0hsMykj8VxiRvUu^__SIhhV~z&UX>*7~MNH@f zXU1G>w;;kYeal7Q;m5EC7UCpLYn`?`FMm9!AeCfS{K{1S?qR$Lhnr76UzVu~e#l}p z&AOJUzevVrVJgAqv(lgk6&8{;Z|6DfAFqX=ejZX6VPX?|s7A?MkNY**cL*~mEI=%M z?QyB(_YqkgiX0uE#~exer|4fDe`AY#&tPN_=b9@AfzDdDJtu?Df+tp)L5O;_bkvlY*&3gHdRU>-~glU2iY{J-kLv-wh*hrmy=dC}qWoGnysRlGiW?i%3bmBCv zAHbt-ns|QhWPQC~bKx{^E0xGtf~8q)dE|MyPHY`6a(?Kv;5gOTp%J4@n7TVvg1=)M zr|o2xE1c^Kh00rRrZ^V|<0EH6fj-mnd~sxC89ZCrJ7+&6GM1|_)~dp1HBWMAb}Ewn zp~v_4UUaT9cim^9B6XVH*1g1$CrP7`CeXdpSe6;GEq=Q-`Ng#RWUr;>LRcvPS@g%HZzrG;?>?aCj)SXtN5DUzQ0H`>t>69d}jWg%!}Jm|dI6_F?7({-C!& zYu7>!9Cyj^)e7^8xA3euo#RE9Rb2RPNy~XNVkMYk#`AiAlhSo9VzFvUXP46J=7?5g zd*y6O7yqh6HkRc`5B^w++N08WudLh67YqM9Okm|l=3d#5WH=S&sV_bdp$BiiJ_wd0 zkh;0OSZb1qVsvG1Jp6Vs$iMVm=IU&hc*`D%nsu&aA&bdE8!c}4^Swk0Ep-?v`g40U zlf{CPX0jVaFJwN7rekB+!8GLp8V?T1u@vhUt>hn9eZKk;SNQ*(npsZmWlksIHSQUD%>19oybJa}2Y zm`tkTwTh=!0dFoh)5I?O+EgvhN3+uSz#3{)>oDdNPvb8?no2@+y10z8#zOh4ncX!A zZZ-yY2R?pETkc1qYw(+{tFh*fiZbPKeW&6yzR>bH%CRZ`aUm6n$k3m>Ht>&KT>kl=bz6<=W$2uHqzh{q$*#0k zvux_Zro%M4f-gQ1MY!`uXvd`4fy9r$G<+_2B9?l4eNhrC3;`N;g>X}Fu1Fls1nxl}GB1xYd^67bgnvErM72;YqDNlv^v3+=pz#DMPIXL+q>MOM zTWvmfRXq3?HH`Kt9rr;Nd6yC*Nal*~RfoI2kdc0lYjs)mJ|Tkdcyaei-)V3Qplcn- z-dvkw-D3K=(t1g=&*pT5e7s>wgvt`U0Fncv5+cS?4Q9k-OdgQ~W&7geYF6PtB;#-V zWQ=P@2|*UNlmvZfd4|2svLEr))_jMD4ST~LSAm2x9OC78l2Q(xBijZLvluHpsy{irjci> z)Y*4LE;U{;*5f1Whs*-4m_Gso3oir~RqLnV$Et zQ-ngFy&3TvUn+8vv&dJWhzR?H2L2`|c}4VM-X6I1(_=d;PBOLNW!lSQ@>jXwARq;n zO^EsJ^Bl*+nJ#XyYi4n+q>vw=!vK9e4^pfGQp#cPV;lQZJ^q&KK2nzLXyW5QPeqb- zvtW!H64VPu8hq~E-|zz?G|Y&n`z46AzZ^9^@ErIR7?EDE-qMB-t*A|}ekM+43X#^-(17r`a5*?SUYgGpdm;b8Z#%_T zf$odzzRKZO1EtVEK$;MpP+eWO0}4ph1S7IL^Vcy6BKW|^UmNOQA#OKCH3thP4;G#R zEfkd`k(o*1dOL#wsTdMi4LNi#x@Lv8sd`B)xU7c0bTQY8N>)7kIH0McAu`j@w#BHs zf7r@UKKom9WJ#;R3CvMfSSHa3xwMN4ErH?$3t&uezK-CD_l|=C%1{Dt4R!dUa;~c(4_X_!VZSMMnmc0vTTermz zq_VM>-%eYr|Hck&%lXJZ^$dFL#?2`kCbt@&ys2eFlDJJff?b3@N;HA*nINL~{97F9$o@ zLIn_`u}olq%4D~|eJ=XQVGy8voW(@6RYwFo*@tHBf@{$mRM zA<=t?8nvYqu8|CInvIkg1WhJA=Gx^8^;Ni)(P9uiQ2$x5JFY&+qAquu=6UsoZiz*V zOe$7R*g{F?m5RxqOA_5zj|#WO)<0Z>Fe#+c)7p?BP=5iAO`;LeENvNY9Y<;i94%2kZ2&e4ds-o~@g zS3tndu-<)sLGjaS*Dpp0YBZDTWsGb*QalQy_;uxbj@?~ud=BPs@*g501F7Cvp2O`p zYN^HKHXZR#q{)Xb4Yb7K=)4na1`FXF6tz~r27Gc-*eBrdJ*1MPVu z0bDyY)6WP7GXH!IU?o&b#LIbQBXHC~-~qcw3IP9lg8~B39mh$QNhXJ8@C^024>u)b zt5Nv&bnLl0?DHT|<%%~8^c>!zGcgD-ma_OpvdI9Oxme1v|G=&@pS4pV2Uggg{H5DcmA^j? zyFW>zG?!@a@@9AGPHE$}(vng>W9pyty>)L4wu2^1&TRe zbite3N_^ABP}rV4)-4vEHxQ{s{Khy&I^t;vYC1RETp|EQ4CnW0nK?5i- z&&c34hmzO$Ii0s+mgKD*=R8KLIJJfa)4p}zQzxO0sheFx%GJilVPR{SsMchhJF z0k(%fd%Z9L;z7&CJf`0$XMYi%`fgEN$5`oA&3Y0pdiQwud%#K42ZP_{ z>%IeBs!*D{;K*?3q|!OtH{0uSJ?vL{mLpM#ltANM?$(o} zNS@+9$*I$A@zfl)7TGO4;3V$C#iDN1soE~;QyngL`s8%EA?_k8t2#Y&dnmSOeRn=r zq+c&+|9h2k3j{z+7B6fl#1H>caj)@TtwF=kxaBki+?+cB&oS6TxUK8+M25)?S)wsk zYu@{6#8Cfgzu!n&<5VnKWeTAmo(iC7k{~veT)3Y)8qK1h-Wo(NFqAZbnE#3cJ))-g zVD~8P$|Q5zPOnSy)?RVCbQ@E?%LXEs0^sFqNw%dBa~bnWC(1uDInDpp9-3ie8(>^Nm)r=aT&W z=6v%NCeHr2)mAvq@2{6cLaD3OsGPNG>}9hfrfj+(hwmHPu|w-W^%vhC;os#5$JaLB zo~Md_(G%tofwnQ7xgeJ10s(Sq&FVAf)vcU4u3eorZsn!=?bSU2Tx_Di56U@`H9Z`j z)!PFgl7;BBHQ4p#W)W?3DJA!(q-sG3&{9ov*!D-e)EHoM9@OQM+FeW_c0!o$V%rA1HX$h{E;cjnU13b z9FCea#b3F~WlUl@;xV4Ezi-9B|L*v$;&On7(nuzl8a6NiW>_&d$>T;6s&Yx?g~V(_ zUdEyd4n&Xm4AZsCJ#wsy=uUmsj0$Y2;*`%>c-Ay^=`etVv14;3XR^lV`&ZW`$5(q5 z{E}+&$THu{B8HDih{|&_M1*Lt?{k}ODSSK&V`AR!UdqMbOZB^ zS>VB2xm5-t#UoW-I>7qlGORsTy71W;HD+N)F!o_?hFJO-tz^4DsdOQN zi&8}GD+qHN76lnD?S=Yy@|lmnj*|H8tHAag6W?+Q%=0N(fKv&y6)5)oh}#iqk{Xyh zvTP4~6UethC!W|K^n083w3cU(Q>98P23X*60{CahdkVbccm2kQuRH0w{GC@Uk_D#U z_s3(N$V`B_ilT_1FW7E3=GT>=O5A_&^_Kh~Q&Lk1ad*8$C51~SDR4XtTNOjc3U^5K zp;oayF)V^hmiUo z?Ley-Q(mmJ%QCMMxy^a*-LhGc3M|Qzu9BWj**LbZaHETs^%eKuDOAw5IJu%VPLk-v zO;&}z*r~k*J%zpF^!VfPuiYnp!i&H9i*1&vP=l0~7P4fYUqvDSnwu z%!qMy4Zyv+oVcS^+bBA#kM;4KbeYU|*K*q?2^3m=)?m$3JyGr5vm=%57r>nz4} zh{5peRJ$sp#IIo>PXRew`QOF(9cnU*raiOrC#HrK<;tO8R%C0UHv~(Ea8$l%S{{3dcBhL|QXcgr-R%q5LVK2s+O@@f%& zU)^lqTZOj;hlG8@u^}|T&b30oUh@bsDG`n8I}*jd*mc;QEDFAnB?6pe17(;Iht`rB zKqFqV0bgKuICV+v)VWKOE$jURarrutT2ILaEQ*;xQD?qi&j5WhtxGnCJH=}2odL7I zaQI4u6xEZm5t26A0C1_B5L=)9?b%eoc6vDJCv{VY&4C1hNdgD4oUi@wEQ>S0Q*1x; zH&obpnt*WT>zRTKgq7y0CcxF{|7?NOGkq2Ko8x^*dGi;%mi^?<;4UfV1&&ez^uCzt zIqe@`+Y9o6)Jw-Ta@yVsaqG#hRSa3FFdM(cB7rg0O#aa~@i*?T{(eJ?rRjEr_EWzz zsK{qkaW?|l)%Lq|A!QOx7z@dztm@Xc6Oc;bOR49&o^`KQyn{4514!Qtu67Xc=kgVA zY6tK%UfDTeQ(F}Uu&BmPq1bP{6Y29P6PeQH_wJ9R!bA1uYWKE;Pd=@O7)AOHX&nXb zW3!EiJwQQI`vXvr!;FcNZkjC1*Z$CqVXw;-2Q#b7wLhwSo!6b8M0-QdowcT?>&)8N zi?jIt)jEuYZ$UIaR%NrGyA4a~_l$G5P~hF&#gZ5G&F2(PJdtU6f+DdDTULzQ!XwK{ zmR6N1+Lg{=V%5@U>?fydk`lk~pRb8~jE=mQh9X%jVSvGH!+Nn1 z7A{m;@M)H65zW3a)?ZgEv2dR!oKM97sWo|ZUR?7qJ39g?QT&*~E(dAH6=5Fc(BbX| zkO&Q=%#jMr9@`!23mr7To$`8P4_>@u5*R%t!8&q>OI%Oc`H0Q4z4|n*kQyTDqp_QW z2P9u*5{$LK|E<}1yk_Zl^P|)v`B$0E@}H;00?ruJB!!XS2M^GnqwWH*S`*9Y!gJ-N zEt9Jnp)p~zO{K*4#lpuE9o?XV zJZ^tlqk%!@#)`$w3i7tRr7(F|uDGwjxAqjs@;MwEVPme|8c@35Nsk z(bg|-FQ{^2K4A&3e{60XT1AF zUtHoWmUod#$@FMr2<(2v+=NA$PB%aeIbK%{YNkfBmZ+2WZE;yAS_n)zh?3nVYFal{ z(an_`_m9^Ux>vouYLh`Dr~t68)Y5|oZq5V{tr%fW_Bnykp%#q=ptPlE>s6gF{CwQg zimr-?!VHQn$9f3wNL@|mHm zeIkvj+Rjb-^0g7O5je-SvP^v@ud6opLT59A^Di3~X!o!Fw1HA#_ci?@;+4QMRxgA# z+}~|IwaCMVR*$V_VY6+`tiSGdaIpfsd4*5mce)xbvR=yTxg(3$e2?|u!To*B#R>dB z7e(xOJgH=mh;ee@=dq~B8x;8SIyhGZFDzY(Lflqg056>*2>Xw>&Aa!e>YnNArTnbd zTs$;MG(Bkklw|KS)e}JhU7)3luai1U8F5o*-ErYP^`z`Ag#-Dyg@vm8P*-+tYsq={ z)nLtt=lp!i7S9I!O(qUEu_P~6Q|zIFyoR5aTg31LGx<0;o>ep~`;!|`Nm02PeNt#h z5U@3%xHzA)RuES=4CP&M4kl)oZ;ZlcN`u%@SeG=NN0ykYYS~KM9F(@>$ux_ieJ*FWEz1rGLWOu82w#sqEWamIoX>{@CCO*hBy_S>+Cr>q)n_4h|*iKmZm zY2-z{?jqIjI~=c8t~Qd+>KVdLM+SYcCeKp1IvG#@kXZ}_xt6_MolwPE5!fx_pIcS* zO6CK9rhqevCa8Mp!>wxd^=}S(=&uRjHvxeJ*Q>Rm9Oq-zS15<%;p)EswI(Z1IqKZU z&ThT>sLTE)vpQA%SxXvEpy9)78%XsMFpxVQUH5{@>ATHJpd;DhuRnOP^ zv1wH1R!^vCstb`?wotfj{StfFbks$DbbU6Z>(z7pmOxFA!!5zJ?sQbvPzzrG=3O1k zrb*TRtUYyvG>zx#=JLdX99;Q1WY=xCNHs~w`QT@+DYsCPwb7VtEKA@j-QYF6Mf7`` zg3Er@)Cv!|WvS17B5=vJo04~H&q21KxaoYh3h9G^G2PnE3txrSqm{Ytb-ZrR#w&r( z?UHXKUGe-jW!ame^MsC_;7u1-`5<5hCH&aOLWA1y7x+`J0P>eQj6;Kbb1Y$^#(mKP zwFAYZB2ft!vLtQWyElj@SD&3Ym`UK6iVLQ`&KfRE`?4O$w>P zf+O8{#yNR?Y6c^K>fEN9F?sFOpqm42GFM}#!7VOu#x)$0vlut)adBB~NuHJ4B6?8k zHh1w28*{GxtmdpC$-4MLw<|nN*Xw8`WsgZd4LUb;v821nZKc)JQrQ~hv~Q=yUiW=> z1si|DOT+7SrVOtFG;tl>-1vK_Fod+}^?fCRG4!?BCxMLq%Gx-*W=iMzGJpKs8~5`W z6ANw=Xkm)i-DQ;=-wea&z}w3qudtaEx1GErA)cqL!M8Fw)2^E-#3!wCI#|?X1jR2T z=ym;Bu$G=MB|po#9trnkhlh@Xrp$?)q%UZ$v>D)GR;LVw(H}_F^^(LvLR}yXqbv`|$ z6>XSjAE%DaOYAqsnOAdC|5%$S2FUS|?!1n?#9oFaiI7vKymz%I5s@udm>0dV(Jm>f z{^(RJFLKr%k9C~nM-B{3!Pf?THix~K9ei^Pw*J6oU-;?R?li`f z&;cxzKveW9`LEni*c=ty@x0zQ@iO#75iHkQjfQ7(!bcKGc_swnrGZ^cvZfH znZXSNQewoE4`MXP+i%dMSZ=ocihW5mO_gvR3QOGJI343(g*6~+guu?K`Ep}6SY(1@GkCG_7nr!W#1bowQmCq0a9a1zS4^C}e&?;0U*RV` z^uZR`0nnBoQT{ukdA>s*5~page64Q~N4ENz3#}L}?RY{RF)u*!b)`sB?QpoHw{i$i zaN$~WJQO(_S1uFwBINFGV`9#d45iOgoxSZx%JJQw0da*89gnk#c;i@K1wjA#y#0`X z+$=6d1)gNu=+7@M;ssY{T}!tMy=N@g*os|0e8!?S>WLvCi9W}e{bA=s z=TLXGQ$R2RSchTzhuVw$yp3fJNr#Vb%fd7^y1sE!> zM3TUK{C0>-=H?G)Y2$4s*i0qwiEIyl4ePor`_+zqFy2aL7rpFNFaSvYC>`e>N)x4H zV)ib4Rj)?0^LD+&^Q=IT6%U!&Z4z-eh-D&fxagfrp;&4bPPy1I5(S+G6%-JY6h{@7 zj1i@H=OqvRFy@q!XVFt_0qYZZQ^+)lUe62}xY|X_@{y2#9asCk@6ZhUhHaqLuKsAKm4R3ue>!E>xNm5XYh9*n~N^2}cT2FyOb zff;y64N}j z{vt?f2?HWs1}*o6RnwWu1>h`b<^vQuBH#CvMB2&r_PuUwajvg|Rb12rUe`I7T_+}m zCs#T+?EPY4izN7ccZsx=C}HX}6{D zu#QWqhe*#sHC1aXYya{F-_WfPoFz|xyU?OPTYE&b;RI@w_G=6eSm+&z#+<^zk(S+( z@hj!7i~I~|n0prmKv>GG@%H@21A67XIgb@vMTe|9qzk2-fL|RB+rlyp$%^*pnp_21Mu~;)dDf;v ztQle8xD>!Z(A|MHz!}vq*tAEOXN#vn8{Y}8ENmdX)vQ-vP6gx^m`8;NhWeZIml zT8oYc-mt;ka@p1AuF|*9Q&OA+_GhC z6u{e~;8%*1h9u=2n~-BI(d|Nm!$IF(;)r&=N{Il)VG#4q9MP||qgITwUgBf#x+wX4 zc>h*E?m8?=^QAtAh_&~sQgQ7E;JiNFuPcSoHl+P(gd<@`93I1&(cn;|#f-GdV@F4Z zc4)Yu%jGVIYf0Mu)l}4K%1;Lz{kIi3>fDHD_*k6M+GTL9R1Wv^Ju>;K53kn$Y$RDz zodC|K4JloFzIrN_CY0kK$=oYyt@2imf<3SQsGAzzGg5`juDbkPma@A=f8 zi4JC~&AuH`fAwdp`2g9qbCQ*Gb%F_u*QFzdrbPN#WvJY850cxr@PP6xJ$-6yBc0n) zP<4Nc$xnYU@N$QeEzSuSp5Zlw@(y0=+=`H*q=?Ov$43Lmf=*>501M0< zN#!(+D9NOS&o5zvm5A1So_Y!;WWCvewLfUEC}@+3dAUYYxhHCrWwxO`66Ps%WSJ>C zdp`~8(SJPG8ki^XO*jPqd<}lF;nFKoy*zGC__v5#kn-(HIX-W*w5uvYd3K1P)ELoM zTmFd#D*#$aHfxq+JYM!9>Zj9=4eM2d^Y(nq3@s-pWdS4l@1+>yHpG|F3FEJJ4DHVW_m>cqV(Y;KFRiLYE9*^|xUO z22i<~vS3u;kCAoRWuqI_CB(=N$qOPF<&(F*NNaJ9$*Xh?D_}))Dt4S>ttFb}tiq)*@Ei#EeE6fTL<_KXJEVzQXr5#9IZw1W**w zRQny8qll&J-j|L9PPM%)_?1@K4!yOhq>j#_#7Y^`AY3=vmVWPe00!Yu5aS-d<2{tM ze~dafSjJMReS+sngyaOUQ9AZ)pBWm)i5=#P>N7LdpWyz&7+!fKejK<)i?{B3fcU59 z*WzZ|qo#I}xh?rmj>>K{XLU4mJ2(50^?rN$wcI(GhV{bxA(4#$F>Y?KqWorxGnMwr z&CSUW(-ps35H%gr1oY<{>ji&HZk1kArF_Xmi)g#%%@}*Qj06Ut~pXb3D_^RFD%y zSRP0_Ja`si6B9-8;WTaSDG!S_-b*!7ZnwvE^sOB#;yfXUzL}ARS>J|ND;#cgkshV) z!tqEG&r3H)9dNmL(M&8=hR0`^^12HU93t|FIeWG1AO&=HUel706{iEpZaMB_-WW@} zbGQj17pgbqo3{}=QMf-<=wjpN#RnqN%W{ZFcW;7MX2KIL=Qn}GIqLRi*zUHIyp^3lLl^LZ75lwVcHHS6*y+>2tQ(06Fs zn2AAxN_Rnm&_7yG?~yU`|}|HVqiNbjjCeKuAg;K z_wG0jahVw<&oy~OA~F}AKV#i;yW)Ia$%Bk#s$;0OtlKY1!Sguk`5>S$MC3i|(PG$5 z{E+8)MHirn4$$|+wftpP8Fi6#HKkwB*tB{q2;OuNmS$_H5Xb9;-|_>bFv2@2nB)Sd zDinjN1sI$@F05H_(!6+Udz*HDNo{zc9B5h^S^`;TK5~D9Exs$v>oocMGS2Ig*pRYv z1MYR-@V>70L7`$8y;PV(=GIe+S5Bo__g5wNL48m79^fQX&R`anQGcyi31Vh+ap=dm zZsMv>E785pA4>K(|Mo-JfN3Wcky$bv0n%YfavTNhPT2QkEJE>Urg0 zuht%5Za<&$Bjv^{To|wo2hG=ho>Y-cQh*qIZ)?~s(KP~l%G^-#D`yv)R?nB~Y9CA1^Hl~0dKjh`9m{U}(F{|aQ zJ({ZHY8+U!3St^Ps2D1*4kI_-t&OOLl5`*)K9Twy#rSq!j!ICe41@V921+4(B^7NR z`jjecDyy6m#<_HBwGg}LW)WCafO*n#)FnGpZ~lqy@>Lv5<=Mc^4?eR|yXsVRzN1AE z;iC@k%PB9)4%Z}bET5`&Oo!`A2R>M2oLZvgboAwbf)`-+RcNtEa#`!m2EPaA{$YDu zh2zKiLV?IdhG!^c8Q7tHtcNu;AbNiyDmAOI`K|4uQ4^gROVZk;`7pFbR@(5nX~y)v z_V3L>zPW*EkDsf~rtKcrb4y`q3xo9G!Y`_d<|`Zz6LfD@hz~ezacSAxIEFFWQ%5|? z?r)dw!G&Y=j2Uu_bHhj2@UDYFP+=6!dkM`6z!)9bY_XFC#mQNT*TQuB_5h{xyuMM= zGw`dKjmVH;s~WsN@!y>`keZfSBtzR+)wctl&OE!uHH~(iyI@(P6xeGjc2GTMHDWyk zo#!#d^3Bb1VjbMer zA6G2J_z{ysKL~=zQ9FW>k~K&|JQdpOh*Fa{&Dg`4LL@A}`1MSnoh3!|EO)rD6m5N@ zIj(!Mv+lwQ;0}AL>qdetWPVzCZjiVI(fP1wCP2|?HV?oTo#KDB&~K;r@50`MY8vH* z3DV;yE64=FBB`_VidCKSfEbhDuZI-8J6MD}xoY&lI! zsIYzMe)z+!DN6g0{b!zpsqR*RXA(Ho_ai3rW;r9E+cPPN+b;ektrur=Y_)pt=P!;N zACGu_5GB5}S%&$>gLZ+>Y3Mlh(45MNOB`+1^^NS+_R9BdG0<&utJ;sAk5yaj9F4^dXbytsI!@qr6^-A z+_JJp>9=D2-aiZFsT2tbKoJk4E(Q7v$Dj0UW*2vo1>7c#aRuc(kq1LCU!dJ(Q3x}f zb`B}dkU=zWXZs~|F9>Nbd^I^lt1>b*#!Opv=y-lxru|@7Sz$d1zk$cCh`x1)NU|hn zFI6a|jX1low50rck+0rBMML8?moNMGMjlFytiOHv_{L+BOn-ZE)#juRk#kC~W;cti2e<72t)%Mp6Un3l9(ezqL3)E!U?^)L{oN*o)fQ2LcRyS_`f zLSs(Y^L7#QRMYkYN~NL>>Ug9g;pcTP6=0mfe3i*H{R9V>Ggf%avmsJ<bQnPMF#UDF4 z>h4humLy1GA^(TH zw+xEw`_e{#NN6Bv2ri8zK!Qtf8VHtz1d`zH?jE3V3l1Sza7iFIH134p(m0K~H_*7l z+s%LGt(jZ%PTdc;Zq>atpXd*#&e?k}d)C_PS+M$AeBt(HI4*_^z0;+841&#~d1;lO zv|i625~vWa{2ergs604&5ol(JHp~8hAtAVUhq#6LKtK9$014jbYB%6 zkJ#RxM_R6vFrQ46A7lVgHOMN=iOvLdAsQZ1+JvUuYXt||RtU880B37uCAbmv zpKrfWzo+10+c`ez_p@9>B<%NcGFgo2kK{xNE0sPGk)kl2oQR)T$#?eWv|kf@j0%N+ z3CGZ->y(o6VrYD`IS+*>;Oj>vdiku7WPVK~l6K4ZCp}KTHf{Z}{zZVMdAjSsX9dzs z-oCZd(^E=zTQ`Nz72_}wIn9&kv65x^{=$khvNJ!^ISsewKe%j9NAVSEc_wHTy8X8| zCGIaRE~OZlNuvgSq49Zc*|gmTuO~qzTK^h|T(E$6M(@<*f5dnfx8wpG@ zx^EG@qs%nedVkG&J=?3ed0Z)x`js%T#|Lg4D5j=eLP3~mt_gKxbolPe&Z6f!K}>9y ze56=dS5wq!6EZSe8jD--P;+ShmO|0>uENRS#1K!`w6d$*{G{@!yeQ?KRAZS|)dbFr zx`nknqruyK1+M0&+s2~HBWEHoMJ(Hz9NQMfEy5JlKM+kkI9|SmD2=EW-%dvsUig_b zD#?U2kbO{3IFi!G6UuG<3fkxGXE&bIb=M7CZ}qs2ls)ELReuEdtvqr~~!1n7@MUK4;eu-W_6SJ}{2<@{6`BlXss z3hdHl{igA9-PN=c7G6A*Rr62as`bS*6wT_6FZmYnyyUo)1rvT^2g&&%)c`L*(7!u0 zvFzrlKQA#VlAG@Qs+@`V2l)-c>?n~7kyrT4GTSc*W$9VaQLd=md;8~ex7CSud?n}b z5ewSa2D>FmHK|1`gx@TZUJjU1(0byLYyaRj)O0=>IsM>28+_=n)DQO`36;)hd_jm> zLF&ms0EtrxG}7j0%15tQwUp zS!)seQUhd)T)c+G9Tf;YEXTyWPRR779>3JM^;zy%q=Ok>BmredXX1E!(xMS+-#$ZB ze3++ZSu1ngYG%rtAo*Gz3l+mh~A_nG%cUFsb~>)-=9 zG=;gZ5WOC*&VP`$wX-4fN*R;tK`hkH;}qeNt`7$_F&Jj0_7n~2r}V!2YJpu5KeKcA zWet)U+FlaN0nMhT;FvNf^#eRDDQ>_%>HL1x8D^Z3Uw;gUCfLu8#G`cV!+k_GI za=w&p1=*~X2Z^9gn9UEhbgs4^a;gAeu$(?CdItbaEey4^`i*D&sN)x}0L zob2~ZAV$6=V4(J;F35t^?J_$>6+YQ49@P0a^T4Y>M{YaaE-$?MSXPp_ zfCjx9;I6Q>_A&|c6Y!}&4R!&?`af@TDXQbGsQnX_PW$Bh^E^#+sHzFks?X01i_(fh z{bsyQ`|{YMG^Vdlh^`6(xiG`~q=~nlVBWlwp#|%Hb|6(zw*4It{8=htT=As_>+9zn zKr}g7yXyBZKNA(oy}&MLPC|#^{>DbPIv{=Vm7t)#Zy`VQV~Hg|AA1@3rjM9U(U42~ zFaK;k!kl|X?TR>kZD~zM`hR@vBW4IK`py!yn`|NF=l||?&oRf_rxbpcc&Pq2Pf@sG ztBkg9ey4J?unu|ZZy4#urvQf7dstDrN+W$WxKJIW#XP}AGEv}- z+-5DI_PUNZ=J-O9ID+|I^H={|R{62l zA2IXxx*Webo_*O|VR^(*JALU=%NCef+K;kkPT5gDH>EA?@ z%5>p=j34FOgpY0(*>b0pchVVSAC!efc~`mYf%)(CD5-EQ9%(}AvIol#%>Ph6vLCg} zF(}0b-hH(o2<1cRySI?>h_#0?$~7WBAtmxOA(Zi>Bc{glKM%?^CG}uE09Dly+6OAL z`^Sllr-Mk;=k+A-8{Z&O!M{x?JBCYs#6(5ikIQ}UiCHNhEVI({Wogud@emdMyVm?a z?{ml7$gPPNj}l8S~vk)J!VQ2)AZJFOH-X4|=(?^w>Y==p)J(6vgv%p?wga`$tvMd8voM08rg~JA#U>EK)Cp$57E7x$AsvOj*=A z0i>k^PyN3=_>t#D`71MD{}tWCk&!K{KXhC84KK%pY3M@R! zvrr?5T!^PnNV5zPf7rD$X263J3B*-53zzJDa3Uzd+RFGP@Z^Sml%)kTd{m(em+T}) zIX`tV(Lz1s;RxhuZZEbg74RN(Hka9k|JZ znji&RC&1X&mpmd}kVDWy#QKsD<+;k=1&y#}(5jXNKJe!W3JY^YzdpFttU~b@Kak3N z{_M?j^B+jZhuZa1|Ez~~X8lP>Vf@JZ5E_tz)uDa}2Mj9zqt5?Pof8}o92(_q?2rLo zhNE1unMlbJH9jC1;jigBp*r}Lm}!Q24^=a*NBnurbf;}o5sWHRPYGx?w9o`MvC-Ur;ijKyNo|%6a z?4vczPnS#O@_ySd#=nKSW~{n#JL(X0FfeEkiTkAR66O>s%wFF?NSc+{7rkW>e zS-pV3EBk*n|EijXn9FagX&64D%AeKaMs5~w{L{^!BI%S2_z$)Y$I&svnMj$G7JS19SDxgMDmeaM;Wy!zb8y%lng%dLX+p}LFE~L5d=a=>IrFjU> zIRw^k|4JQLjghd+@IIT~qTV`@ZZw_Jb$``*(aDwL&m~`Wm4Gzf&>m=xY{Y=;l&*Pc z{RWjY^7K-t^t?FCMBU)9g7m{_sE@#}dTOELyQ`^IIo}wuqc=HtvHQ-M*E%X#$RriY z6dI;51wZX1*XIWS!4BDL$Twt88wBFx{ybzt+QGaMG^4EP=$-SB@TN>zS;Njt$jwnd zqyR@`X7`PtY2Wt(n_($=m_=^XfMDz82R_3;K{^79xWE&VXyJ|IAUzK{H62G;=SfZT z^)M|VMaY-e!;5!kwFQJONNH2Uc+n9zG4~gQklV9adE1?@ur6QJ-OA;jy)X6KWFg0# z%N_OBnU6D3f(sU$4O=-OhbBP~C}`G1cnMYaTHD*#_dZocks4A{?OUel^_9d9gS<>9 zHH@PQG6NPjm{V<@j6v*PClOvTNL-D?44}BCK1cDHf4!xCb*v}p(@n&{#dCA-Yd15z zDyM?C865nW?(0^gAs7wr$&LFBY@=x2@~~?{9|XqnuKvBq8}E5m=fNAjBCCU_qnY0G z)+^Oa;cIw%&F#sy@ql2Rgp&1n6;$*M0Xr3!GwExMWf5lAE9^>Zy+MsBviwt7Mhr==Kg%vUalr3rsJVb*x`8P3%?O3g5w zFZ%j&dVFRPbx1GtB4$K}sbfUVQ1#5OR6DB8?jgIr_~J8|am*{5vRoaTP2qU`B5<*> z_@wU2{1#n9H4}dXi%W`_hf_xrtUbuBAbrW>FR}bzPmN8D6|9IM3)*K+y0BNH-E1r2?OAE7|LFE;t9(SxxpMnE^!sif~rg&$owyuYK5t&88i@X{~olYV}scMfmS8x+Mye6BtA)9vT60 ziQstA4C&%kFv{cRQdva#0wtfV7Y=<9EliAr4h}!9-yAKylC=FPG-| zFpr7FBc(0Jo5OCFBeX_YZK}E}jZN1E(q14|)1FPwj|0g*wj#>V?#6?b)ZdKAD14sM zF8s{)AJb@1pQ7mA(+`S>J^uc7vPv-AX?zC7hk`)#Np1_+FFEZ)X`J3LD)IVio@dj5 z85|_Nxm<%w4r*rYsyhfoi?PJl8>^@E8bcP9FdsB(vILIMNrZ%@s&uW4Km zgFk)}w1fx*gv8uPt#t-ep5s&3HNeOPx%8NuIO%YQh=Gc0+)EJUtn55^qP1H?1 z!=2S=4=i=_3L~&e(?=mXC{&p8c){!7!x9Gjo*J4yeb7PoYD5$%Z*fdUIxKks6AAGDHAo%hj#&~_n2g(0*;y8?JVg58m`C4 z;QU-h3d_N@3@zA`HkzKM+hVr{L2rcETZuR(zLhW&+L)r;5-{*cJMyzB=;7mj$LhsDSRm1^-W2oAqxGaHUAb;zGa{EsGDoO zg!sdsoHWm?KfkjuFo}yQ6wTHMU|`#wcVC=uwz`_>K_a~Pk4Vtlz>lvo6okT$X*Q4L z*`~iMpF;NXWh^?|lLRF^R-Zp5A*_i}PC=n}?@kB}*k>*W>fxvc(Enr-(QS^zft}B* zBp&U!HLB0WM(1)-rc+Ff%vhH--%KTdQMhx^Y~_0K-X{{@479O*ab5Wl>+YXiAb>Ah zhZ2qqOLx1kp`-2QgqJVB*Cg~H6AY#J;1X3D0?R2m0uWw!p9@8r;$sabj@4=JOp=k; zhi|!U5q^~Eiut+GB85_LaG7=|$>-9#m2eHN0j*$?ZbIjcfwxt;)5UKjbTiC-e^qo~ zPa&n`;1h(68sw3LGcbzv*hCC(wC65t{$9BydS5y*W*)%BX&uJ5e=Kwn!YYsL)52|C zIzfaUdJL727?QX`6t{%VzXgxdlnt)2{5>Fb`WaaE@@xT*&h(e%+S0Cy#ILV9>Fwqm z%=V9N8W(Rl51B&T#qA{@g~$cq6+GpB9Uw=ZsM_#*ug+-v@qyl#;J@vZyg2<1TKH&8<*-!4FY#r*Q;8C4QqlxzbmNQ(BONQ%-wW>zJab zEw;YU@Z9xp<$Sq=IHmWNT^52brBuFKG#Lba3pS1s7g&KDv|J0=;PKHV8?v&^qZ*Ca ztpfI;Mu>COwu0#XRp1>WREVRGoR99K-35eNQvLu808*Wk>o`bNvEyn;%16H2Z$4ib zQMpLYcJJU8zFdp9b~8Q^Dr1$;&uq#;TL$pQR&deF)grXzfK>3ed(om~(~Hu+wu|1^R`N6> z_DT8A#Xlv#@f;Ec&N!u-+j=-B8jv>Xq~o}GhQH(nm_7=y}N&xNZ=6t`-bnvNM;meOkgi+OKv zKee3CmO&G3OU`zRFsh{qwjr+FOM3X$#XS8pqu|+(iu(rv;;d&2jnJ8G1F@~v2{q@E z4*Es-3=%VF%sN9a<1&WvMeHkk)4p!9m96#H{^c7NN1=svGvSMkLG35A)0X-8>1c>y z>4?>HyL-@5bVx9yta>WLbhpm~iDqZQoEp{~5!uCtvqSrYAfX%HC;3o^CSGI~Z`ZZd z!xR(Q`h082RoVb$I&0gg`6rH2qHNG5J3gmaxgj%ulAj5~g9M{aHOsiczV}!aO(jETbRFni!1!4PRFnieu+7)4hRvsDvmzFyd&Xy)z)r^9 z+&7Hgv$hc{Zu=O72)APhl;H1SX^Y78BAWbS`*}M+!K#~X*4~^28g*@-YAaAH;AqsU zn>cvwvlQ&J5rpF%x3Fc*0NiS|g$(M<-tU)*A4ewPJbRLDagTG0U3JRP%`qaIIZ}N; z@4E3mI)+GMEwQ?Y!W%n~8QV6!J#>5YVz>b)I(b%0l_uSJXrj(9Hu@*v(c>q|%bK3U zw<*?VD(Nyl8d|06%eXGu11=a&tTN!^t{Ze(a~zVJmJoq0yshx6S~ z$&2$Ooyx3`D9z>MOuXjWZ8lQs}Rxe)BeauGVbrG5i_r+uPJEY_}l76^-c^S7fNli*q{eSE1qz~#?LKp-Ir zFHNaafPY7R`Z^QsJQC`l$Yg(h-QbXN>dTffIK*CW&yLmdsm8hroPDrSXT9cfZd1IvGe2U3FFJuu20DkDTppkl`ZLL~=l-w8m7B;XSk!YO`0COF1x zZA>X#Gyp<1ceN8Mz&alog~N zZtjk(sl>RZ=V>U@X9Z+-wCR2#vxMajKCxX}I+i%AT__w9Z>6CY=R>+VxtqcZI$J8? zU93PI3K@6^>h3;b14jX}=8g}!ATF2Z!dhF>kfeUBQ1}{CSfP7ywV3r@&kfPbq16=w z%*2_WtG^(dQc6iwP?A3ERaweSDu132m~pVtG@#S-Sm|kb%@q2=?5Xg)!|8cg{E;5` zuv3V0=bKxwo)ZGicY2`BgRe ziS0>S0?>fPak^KkJxEZiJ_rc<7Ekm8)@$KcB+S6QJ_)=T||uCSHBcP zn53qN9*zEhmbB^SOOUSz8tCsnEzN5R?-Pu)ZyGsaUq;(m*i_ilWldQz64#CF0pRb; z7xCEzfrJf)e3l;Qq-W}}iY2J3#Ag{7Xqu)pqZtu*$FQNwiHwfNOv<9rAuTx8|Hfb( zOBwQMgh|N`NWP6Ht)ntL+|AJ_$@JEThKOa5AtgAhDpW3iD~E}N8fSRIzQE7}auaJ% zlZoe(q0=(_wTpM1+O94ei{(XX6sremvv~q`?)A-jPh=682iGjOxHp_gM3m^ z9FkP6Qcj@#>>I#YOMWY6sZma-2L__YDI; z!LvEjc5giiz}THV#)JgN{ZW};j2x?U$ayQ+r#Wt2!D(V1AOFTHaViRBjhY=A%Jdyx z47qQ>DD!%WIp3Egi14x0Sy%#zdHjYb(--Io3L+>e>5eW-z{nH$ObsW}ipV zd>&=+Px-BhW=pRbJrowfpM7D{+bvqvX)0PafuTm#+i}hKrSD7v&dO$BO&@BWTc-)8 zYPOze-*jYLm=UvVYidrDOY!=ZQMZIY1<;*o2VB9<_yLIE-b=bXb<415@ZV5X8 zn7F#&3}tM5;y|Rjg(?4IcXi40pt<*~I&CSo<{b{kS$t9DZ9*< zF|5BlmpM$=dodCi%MBU4#U4rijz&O!UOHldM&s?&mF)t4+nu=<;}vOeb&b^*4jFl( zJMhK?pIeyGb1OUaDu*O0%`9oFFQm9t#^bAGjGtySfxgaq=z=?9InQM2Pk>8EHdCjZ z$$B^S`kv^#Ne8q$?`t4ozF2+J&%Nd4BL?|zJdMg&DJ%$dr9`e2&cEW;+&m3j$|4sZ zD~!GeKN@gzA{7EXyC}~K7F;NR9(CZ==Ae-_#|OrdNl4as#fYP8TDbItq_u~>*s(+d zDzZGjC{J-cTE(j8Z91o`;is6pN4rF#@P@H>T^Jco%=**Uhdjt|`CD{fTKIxH_xSdF zjOQC4Vkzhh!x?dVci!72zi|7+`|fJse0$KEMYZ#z57WFL+BL)FVn*T4!3nAk#HqU= z>i?7e-)8}^VLhh>d6ZGCy`&l*idD#yPLtdby-2<*4@UJ>7WDChIxf^EZYX)&DZdntH0X^2@G$iu+aVzfw#Hy_Y%3c2O zLu96w)7^qGZhBcV2l~uzqEX{Mahw+nB4{=BueAaG9~%2vssfc1jc`1&lv!zp#Lwqo z3;y1T7@zk?8t$%kH`ymvM#69OXwTUJnN`kZLO}iX+C^xx%nW^W!te+?M+#$9#sB;Y{p*a@zS6k006P>VZ)dRhL~&^ zBgBtBru5j(1JBa=UCsEYmhNJ%=8|09RVpTxnHa-#g7gB{P0$@PCjtJa4W{A zUo2RRY+;IFF9p^2xXC~Zj!I;ExA~3<5GGoHo=~qll0eCg8${_&2&#kKO_I+nUIoAy zLQb4sFt0QaVwb{Zqkd$BMClwPO&{5O-dz#+ zBNU;;caS{D-N424J&=%(Qq#{{=wGb<(LCV`hpZ5VK(@Yj(#H>%bsNtUQa}6H>*&U? zVI5Qww7*pE?;1s2I~YgzQY629eu!qLLF;&TxjDr>3ycnyCJ=shcq@04gArlZ85|!R zZB>NE;v4`JvA4K3>?g*1x00Hnb~l!}kY4aiUXIo=Z%x6b`&L$hIZ z9-058%HL}75rAlt{dnDqzH=j@HN6}P6sX(8eFQZzE)?IQDjuWj^*QOBuG0Gdct4d0 zdI`)d^CH+@lAdR+82Uru1c93#t@Vca*s#(V8oW=Xb=b{1+P4cvXeVmnLzSuRb*fV#BxgGNo}B_vUK zHLs-J!Hi>MF~Xe)^;~QawEr7g@y*ZI5)trD)5SIo3&hekGXhL{Qch!omEqEu;N!70 zw52F1v4NR*k?X}PGgku`pQoO%tZ1EsOYcp+(?G-P5a8>>!^?)v#rwPSim0C@(T;}> z2_ys>pc`9N6HgC)Or=fskoQ&ckN_HbIk07*lPmVvJ)(mUY6NVx?rH}B@KZm1t>M3t z{#+*J)xpzfb|Qplc^!W@+_ zR*ki@D6O6ns^KgzNi$8X7j3B;4YLt|?j>t6*aubD~yLvF+MjdXa!>EhBBkhq_0933`BzlRC}IW@u2 zs!WRJIwM_{uejlq;$=-{B6SW13Y*mfMU6>;MR#~K`P!_Y=*&i=>X0#vDYDT z{UB>LFGR0+_lWujQI(H<96L*oqc9TB`aR_n0sB0D^ozNmB!;|Z1>uXRU|iL5_at)m zPYJU)m)-!OQU?wF8LMANQ4VV=?#F8HwJ~h(a%NVP0cm{h!plD1<}a@;QKMz;#YBY= z>kEr|s(U%q%FxIq#UWER%i~L^FNk?Md@7PoT*Qad)A;;^@60bkD5Zox$GoRJn&yGL zWHzCy{%Y}RvNkfkm$VZ?05WFl5W=^!=`@5Fa~tPFShkMZMWO~W?@n0wti}tHZ3vsW zNmvy5QB#}WAKTOSbN+ng#?Rw(I;m}+f+7};@NJzLleBh3&C3tL6s2SW_0BNs{(7Aw z{*ovq``%9ZM$wf7LUmjxRQFX~Zs#^Z=5WxLk>+$P+eB@<`oGs=gl;Euu#s)nLh+kF z@P^$|k8iS$@X&#qn@x$B{k`8^T>>+!Rb@>_;g=`*613v8a@iG3KMxzLQk#ldFqgboA+>`Fz{t{kiYGVD#r_ zN{%^_g7EXctrpmSK{X1?RM)ahq!iPECa1em*(U0`$=q=6Ze#@}zOpVA<_&im5`GM~ zZ{&&wxxwFDi_J{3f=7~NZ%N!C+(yih4Tri3M3AY!Q z{Yca31KF#|9dvK$=+C9&8=yrw(Vx-4MRR5)x~iYQmAjJRtwe2}7T-V{Oy zIh_KU{`x>|tfu)qbN(0aryRqxwyk+Q%9$tn_g7Q7?6ByP3dqIFOj;ConO}NJ*FC+0 zc8_&B!)xEt_c;E=x0%-FZR8L z)!j4ucR}wXG_F=0#AV~ZJdJwZa79K7PRm)ZO?SC1W#Gtzxy%iS3|@j zAZXwRVzCi2eZycn%NR2=XYkG9*>x&QsHDnZgj5)P!pFk7kop!XQuze={C66E_fDQp4GPQ(S_d4W<0===Q9i*JxgEo<4^)B79fJ%71$W2l*o{C&?d=Ie)e5%sZzvyzm@zre2UM(oR{jB<)4!XrO|7A6NQvQ>@JJ9zgbi)q=Yqo=2r##>?^ZxDm z*!%Pb*yOb{Q_X5Om+^INKZ^|itWuh|7b#@)-RapGQw$!37c9O0%4)WP5pD0J_0Cmx zR-XdS7qTPay{+I3Kd_?N4Sq%c`MfX^DyzQle$^Rd+?mAZVVp|AVZ29P|3p z5QjH0-hjXJXFDmAdQD|yyxSNa2p+b2WJGJ~NOv^%&*LPr>y@72Axf}QpzVOucZR=s zpzpQ)*SNnV2RYL4QeG?;AcY785C za}(88`#OVJOSJ^mk~RYF`7q0q`|Fd#qK3|N7d)9G?57Sdr-18$O53P${$qj!>wk+# zZi5DKrvA#osra&&OZ1|lqNRiqHx7`T)OYGnm3~`K4zShZGDGzyKD@9ec?FRXEMuPr zT2&3A{+9-H6wS4K&Y95DKs#3~JAIwR2x~F({$>-lz;pcJjO%!f%RbF*Wog&XmT2vu zApLskoiKwrf(PD5)n|k z+@>9_ZYso$crTQst%b8xHEOm=1)`=jn5BEW^?G~nvg8NCXM=YndMUv`@W<}2+sR2o zJN$CcenB=pCxS2U-ZQ6-c$2}%J5;GI;_9OWZofojEDtz?9b`?1Uh4reGwBp~DhAqm z+bdJW(7dK}9Xm-KMe@3RusB`fk*OMnJm|=dPTYB8K;~`_{yOP)Ylag5BoK}B>g*AJ zPA^mzNT?7GK~Jk0;xu3x4AOH%>@`?>|F-1or$v5+RH*czrJqf6W6A4ecGYvSiLSBC?A(kcH!9(JnEh~+9%{;x>YTlnHXzx;inSX|-;yzTttVO;b3 zd0i!^YdkOucb(?xzYwN;&GazNHvsoV6Y2`<;u`m6bS8|#qGR&ezG!68;t=Ap=30}E z*FR8N3m?x*4$4+WORLkU^^EiJcl+Gtf|SxhL|kC6=zblO@w|ZNC$XRDCLdg4uhllD zJ4&bVYWmv&n_)NJ0+l$(gk$I^qL-?&BnBkKw3)LuF?3`((GD=rfUhpa=C}o;gv_3v z=!W(CUS!L8WYJo0Ilc0{>8k$Aq^zO$(^K1s;TG>D|Esmf9&K}PStia+UAE_6eGgQ! zQysU6abclWuNpJ;#lI})^kWU$k$4MOoV7o0*~}WhxknlBrSNgGtvg~KnW2Q?N*ruw zL(HMkiaH%|5ljzHA}SJx!U}q}7s7#rLz%^L%on|bQanY_N4?!6H$`cNUrFqBx0nGy zmqhCNKT;7Pu4-)=m{EHVLI*X8Wcogv}KeUqDU>q_24z6-O#cOp0tvnR;p)O&;G zZ2vfLZYp5=3DO)QDNn(x9lag!Y!??DV-3$Q2Hs3?e0HA>ZKE^U!$lrRI*K4Vombs`dxPR3NQh?~)Nf|| zWq)~cA5P~o{vdl6!XnIH9<6UJHD2XZlK@^&V~7-V=-%Q;NQp|LtT!9DQssK}rh3{m1`=xRRZr<15>iT7M7A{Fp3SNl+6-;WvBRluS?Lm+>iYgs z-GR%UAl|(jB)J==;0C_h)^C8nDU9$Wnz6BI;809Mj~zp|NcWM{Vp zEEb6ERgD$IQ{sCI{kn}?M_Rq1)-kN&qM5*l+o9*te;n0NexB}pB)zuMbl4@i26p6i zI5l0u)IX;iYrKumq+>26DF4EfA&fhsE%d37bfZT+l-$<{n*Hu|AA- z?sT^}^L0TuR>qUpM zl6b;};%X|P7GJx2pRUV@tTZg^ILr-=V6RQmSxeGOuJmbpmf6=f6b|Aw75%LW0Mb~E z)`v!m%yP0Qw3=PMVSz1p9i%_cu{{W1*#?d$ZluYjj^3&vye#sW@(Ti?`}P#VFrKWT zlW+YIaWP^5AC!uQ;%kT5Pb#rx&T4{6gf7ZIe-QaIBW_%uE+o{%6DD`o7;g7y z{o-jo*=@7h!~*0fG7MYeGO*>7R@<{6$5pfLJ!_AGW%2WI^)iFcoz`W~J?Kl)>ih*7 zTn2BTEQ zj!pjyZd`JpxWhsEv6KQi{G|cWL`>k}pJD+HDIDwp5!?*B55Teo=Fdh~&o>>Pz(em^2|~ zO0cL|BDZpGD|wD;6>kiO-3xBFSlIIz0{4qe-@DC=lzGVz>w|hBSRS3NB6)Ej^k#*; z)gfj?wPtFVxeX1|Vt4r;3{i~XtaPjN*f9RdWr}K9lE2J!6lakc%;>hnRl&9Z2A?Qt zMIBN6FO2$}OMbXhU5@-ZBV_1gtRyrPAp$f4{jEy@k5?>~_)Po0*NLr?uP{FamjCr9 z8lHNz6jbcJ(QPQL%F_LZV{9EL8 zei*8i1pl;W)0CD<)o1y_2|69bUh7LQ`&CM{0vA7=#Ft1*?C|{|)0NC99uwM87SSr2 zB5Iu~obe(PC@KSq?nB`E9FGw z1fVaP)*XRD3y$4JkPd>}z4OuqkmDhhE(+=Vhgk(f7lv3Fu6J3TpSB1g`#Oko4~11z zi8P$MJG_=EeoOv=$#|wSryyaDmRzY8-(l(6!6oM}vtuqKx$>Mb@NjWb4GU8&VEpD5 zMY`d&E&q@9P?u<>nTZT5GIN~VanXY&XESgw2IQ^j7BUiZLY?#h!Ykk04(zK$oXwo- zUn($d-{FC_7?KwI>W=6t=biJ-5mK9}c3KwlLc4tQ>2~l!z6(Ds-YVWesH4cr*E<-e z-|g@Gqrp&Js^&>z16xeFvi#zq^tl`T$vw++3nl}$I6E9v=fX62SrSv&mxuE)y;_N#nC?059Fa8GRt=4G%#*B&xrRZG*MembKEl;XQ$(O7Fm3)^5 zlZ<9J{J7Z{1{=vX(DnKK{5YSeh0s4F{q5`i4wj~9RB(Y4x{N1+%u^$K&q5hudrBO1 z#N0aV#qGs=P%{fUZ^VUD6hY#9g4BiJVfT~uip}EYP3{iWUl2tViECRAf?(-f5g_Ev zt@xO<3G3g3>cX>(;251(omaS7xvha`6~N-vftlH*LN>Qfw19oxT;v(jH5%2VFPeAY zfyfr~jqP0}#E-_U?tAxFh)YUu> zf}AY)-rp)yi)lo|P3Y}?V*3O3hTY}or$ig_+RpG>DO~co zivXF87e#5_9t;@|)5-?K&kBHP{@ZgN9sOK{GWkOFeIu=Z;$9iP&a@>WxLulaC8s($ zeX-8V@hiairN~PU`SYYD5n3pyv4tfoB7$wyXfY&^u=JokbjN!G@jY21R*iFT*hI80?n9bW-wSCOSjx9* zRLy_HOTJ4_HUByN)*yhIT^e4ckamDBU_PRKRaeFqliL=Q;%F2^{ zPgZ-rl%}#qd<%2VeG!zx-;i`GV>9^IMfhs#?!p1D7t@>aeP!${o3O`zIB3K&-*SI4wuGT|UX`*}c1QKp(OtlJd#gE8xl!E~oTg!=C3BwxU6&|l{h||Ls8&(8 z?KzelQ-Xf3Rp=Nd)b?5$Uh z<$}i1?Y5Gyh?W(J)r+SW+U9zHfs_FpM%yJiFW1bUDzF&jOcU|zw)H3#ahfT;x z{O{A>>JLn0)$T`&wBX|ryYj$bv+4;oK8>8S6eyVaSoG5b7}YaRbXiW@Z6QilHBVFy zcb#{g8munn47$k?D=#KBwF4j{lISp9TMf{H8b#}poqiRG>Xi?{)BfuBGYRH~x!3aP z%s8-yZf1tHjFI7KCL?bV-Bc+-_!ZYyw}Cb#JGK051vPpfNh{zcn@-0xK{aO)^CUF= zDGrKChkc;7;^ur=_03+wmQ5%tI@H@Zm3^wU`}~P_w;k@h*}<0e@<&g0b??3E=b!%L zumt1o75I~5v|VaVBQ-sbpv$AAr0|+oR=)<|cElUM^RbFE&BH3LLuNgVRI27CeB`LH zPNvJ*$vq9C$6*yr13#>z|1~fHt>h#VPQzDp?Ke+0AmcsZI!S4nsNcd9qFB>ZDH1he zI%9Sqy0c`hX89o>n-#tDftF3aT3X?S^T3!>fLZA6KHSrJzH4T~KtmORLlm1i0}Y{D z&Cy94t&I=F#QAjXiI%B{pUu%z4t=OmpM-Jl|Cyv24R1ObebRVnb<`FbZVoY@nDyNK zxo0+ZY0h1X{uJqrLW`G;6iArat)oGnU!dc5odPCWW`vQPV>{m0#Hfp+y{R|Px#5($ z#LAcr4~)WvK@Zh=Qq->uK!wDuWw!YHK1H6fkGTIn9pUT1f94tfzc3o%e+ZNR!~gyN z4gc42x}E$r4pKK*(bwredO6ev(W}=#`+Ajyy(TGX`vUNWsLMs&8b8 zK6;hCk#dp5M{)RrtUicdyv9~X5%{x^3;VDCNOI9HF;5o+mXW{HJ}&q_KIX^B4JY~t zSS)AzJQ(}mzK$V_phfSc?O@S=^Hf{8bk;WlQ2zM;V(&ep;f$g-&>%sgjF4cInIMP| zy_X@;B7%q{O7t#zZ(|TOY7i}2gb>k7bfd+LE{Hl9y_eBPzcaqJ?ppWWpLgAL*Z0f2 ztaqJR?>YPI{XFOF{p>RN_d>a(tuf=4d1-|-v^P(?fQ+c=<{VUiec-UigI`PL-8sHswo%$rE$QsQ@>#?4O{R3;Il~$BhJ8Wkgz1Q zIt(wa0HmkqFD$P93Y4gTo>9b!;ieq)%P&U;cOw9ud;SqhI@%r}=!3Wg-b-djMHL zroXf~VOj7aNszm!>=}P*3z2`%lbUp($Yb>J7rdQliE`#pdDNSCQ44u)>sRh|bFX~S zYqIw9^NVYW0?E|-bT9q=`M6mdk3`vQ6C+$smdN_1Jpl@m7e_TcDFe_vDU{OIjYPZ+ z{LOYF0mH1djr@M6O1S2E9}Ft@`5jMN&A`sK9`S9IHp6voi+}f8rrBGQx ze3Jf7aMYy%6Z~%9xQkfsm)d#RI2LxqhQYK0(lR_}B&dTCm?t$;L$K_}*%sGc=Ly*+ zD=`hnL7G|Y1^_908eD^$%^kg)XovR z4y%c!BEkMs(r25Mnqhsr%Ksx@(EF>fWW6)78Gp9xVMWS3hp*{dK0-Ox5Z&-h!OIu8 zVEh&s(fmedlViQ5{uj2Dr|X3zS_`-j6TpqxSa&pO+b1+2O|u`OwJUqMAlrL&=6^K+ z-SI_7u31c7-@vQm#h4{l(p|r=Y8$w}bwJ+xFTsK)3gugEN{sgA@RL5rueWJ97AsC( zL0RW!WXZAk3}k2E_bK@K5}$9mok7!^iRdhH14^c2g4H(&LEGk_XDl5xh57vOZUwO4vXms(R?{WOb4yWvi zN}uEnGg?RZiDi1fB-XTkrYbbxf_@3%K3Qestp6n^bXzXq0*5!GT<$CN5CJwTMK53n zxYcRne;Fn~hcB>}FCR19H*3sSH~8WuV?X&F%iNu7FxSa;W+strSpUty)aNT7zNsUt z4j6{b{+$5bx{nGh)Fm;#Um5p{2Inj_EU3dt)9v#GXg2V*|}ie3Gyv6@nsfu%-~A>5Io-=%;f%0(|P8V z!>CEmcTu$($|i=r^-b2T4;fJ**c>LNEDF)_Z?7g<;~3Yr+{*g9Cwuss(<6Vo|3TI_ z9PHKiiJ}(g+wrP>{99E`MxN8|A{*j;e~^@SM*f0%8EBvAy^+s&SdL$_$O;>J|GmYo z+rZbE4K+cAsZjmKM(vGz{fpX*7KP1Ytgt(&&BGe9GFobQ*V0w=koJ;HmlhtZNO=|+00^P=<|?30Du7`wOJ-l z0Tw@zcRu#rEDtl&)FLq=SNxmCN@N|8a`yDC1-{wjQB?KHd zchY-(lk?Hwt8lKt$Lc$iJW|`WW_|sQDvip>ZG8K)`;~$UoH*YM34SW~5p8n|;k)&F z>~lX4#&7LMvR=HMl`(s_-F}}~=|t*tk-w$Qm#3544Lg}$j@mp`4@;k$;sU7EZs^wc z95Sm&TaAUU$W|-u5pw6(b~V!;zuN(_jd*bda%T^j-9I!1zk=rzx~Hi5>K5Y_W;i6c`3gHn6d4*Z-#wcK&g{tCCrsL@n-V~1e!*RjE1|n z_)5taS|(2*>QBYWxV|(mER}Tj;HA|k-@UiLKcU9S1btiPDYY*iNP(HQubKYfk!NWx zM9HTwU`&t^d9&GpFbns)Qia~nL9dp}fN1AWr}4K^$E1(Xwj21&-iCwbk0a1eK^Yg~ zIIaUDL7#36R9ncd&Zdc|GD9i+q1f4OFyZ4SltV+YWwQChAycFal3_%?Fa%=fZ`;>&X5`Ny#H_3l#$1l!Y&w{_a_E@q(L;*h?Wy=cv z;r*c|&bkTdeNw<`WyR$7_h~_6o_faDzg@gN>d|yxJ8=M2_{4)dEqJ@+$ySLs6Lg4+ zv=N&B*t|tx-OKdbjN^cO%`528o=q|Yv6lg=4fViWV8UdhmL6nz3}AvKJ-9xcgZ6-M zr*##XCBFt{s1payy?e`B=6oM;@8-&Xcu>FkJ(Bt)0pK*N(ll4Qm+>a$X;>G%Hz5uI zYAop9_eH*Vw8kHz)w|7@_39)$4D{kp>!0Mtxj!@-FO7G)S#pB_7g7=n!=+%&>b>I| z%JgLFvibsK^@CtL0fo<}B4@rGp71#MwhU7iZz;|fJ6O`D<-l}B!JidKU4fl?O|FbP>@a}K>FaIY&f*GA~FRjZb*CDvq1#{vY z30djTWrixoJppCma1UMb-^+Vg!wH!=2AJ|v5pA#Z#&s?{Dv@(`N%FalLn>`qdS6E? zPrRj6(5jOZr1q5AiR-;&ez(h{;3m*uePbK#wGgcUvVb`cFumfHNlz7|Aa)yW!y${z z@G#xag2D4_-u1qiq!`lP7p{_FZkR6VXQ1>x8v>!z^mANDl6vxDYp;hdcA>U*ds3YQ zyk4r*Ot+S6tjd0oTIzC^`;UC(fgrvsSkl|_W4z1&uaWqhIUZHAl*8q2<}o@WsK67w zkCw-MQNzZgwN)3NDdF5DwX8{I$8Dvp*()TzSk3Pm1C~48(x=jshfI6NUzL>`#7v^- zx^p$B@y%%VS6}@Qk7j~qtRwHm6;eWMHN7dQwMLf!%sEfIiIhSYJ8k0F>wmgYN@H5A zzYM+&#fEQJ4XcYpotN|54COLFoIGfTe`;Q>7nY9ln?}XmSR`T-_K@GQ<_cR3v}win z<7~9L&5-S6Ilu6ga|$s9QsEK~^g5wb0mylAvBoeiBaRI$aLJ+nc z7UI!9_AeG+n8dV%OuReKc6AAU?0!?+Zn^<4Y!GfppY5_Ea3>}Jz>rtazLt$OD zdZ*ZH?}cbG`wV{BA)5N9D{7*tG`rBHMCeJ9*MD`r;~_yedaIgBNo`eSQ!Ivo^q87G z&yEQ^g?ZBbikpsj-Z%GF9`^i26b!S+1_3N6P#zxsnAVP@VR79i9}9dIaum%G+6Daz zifs4~SG9QCUb;$x$)loar6)n1sp|IE+wkGFrsJ6$yE1arngu}a+wLHBKhxtPMD5;*FQ=H9M$JBqXSoONqB(vfR3|(G+N1iNVW1m=v;U=tRjINE z+FT|GGra&drKC^#hEwV!Mqha$eV~6-$!ttgHcxqTkVPF-c&+UGuA+#ho~6oYOkAZ= zs{HuU;pN#*Y!9(J`w>gx5qPMTvxlBi6}L-AFJ{Io+>SwG70)`+wxEofannfpFdB97 zY!hny>Gfxm7r_&i$qHMe;0x=rfe=``&qiN0B(QF@bkOPo9Qol=4r^cYBmz|jkZwWs z;dUk!vf*^y+@ItZmJ$wt=)9IX8iz@3xH?SvqwFf{MwJI0tuFWAV6W^f36p0=xnid} zog}A@C_AB=P{@SPfcbG?#8KAYSh@FLmnmw41E9ef+Q6!R5i93NtMi{)@R(#|uu%QI zmYVcIuH9`l1@GM8r)eA2x+M5n=1Su9&VUF>9b8D$S$dVe%| z3jepHz}iqJH{=Oy=L<--*=hp6-fk!G>gy|vgly39F`m*Q~rx<>w(GYdL&i690D z1kya_{?@lV5Ar)0)YV**`jY78VG@vVYvNNi=c7vNr)$?qrA$G;C>!vqF;NY*XFJXQ zdEu!-RtV>dJ+cnv#{s&Udo{~UTu#5FGUO$(i@l;uJgtQ3JnE1V8=C<;S3K< z7leiwec`mzbd0Ds{RSV5l9QG3wZsvNs924i;HDgM1Mf+#e7{8M0qPwdq(Bm)=d@c* zJu>uq8 zbMt5(YF2;JPIwO$?QPQbJpwjWInl(jP{pLO9(YiI-9%?*@>!{o?5~|V_p`C-Eql|kHwCe@V*F_3lasoWI#AHj6F?GK zgH{(EY7JPK|6wp7S?CQK**?FG_*2z5Rp|j(GIQ@;rMUlZIkquK#!yjILoAcJmQ-hoKYp%%{l4jIh;e%nrN zjKED%$h)TVwBNW;P#(|hsh7V+4lQkbE%xu5SuhKL8DjX5AM-p1h;4Q40SHpUWs) zvMmp8J1PP_|NR8mXYq^e>A1}VY)eQ_Mo_-AqMuIY`w}={GF$R9^5JGeqe3M)^s?u& z8uhPsWz1~UF%J-x*-;uXAdnX~L+-V5>g)Da)1mXvI?mKJDeJiWl4{1;ll4u{I$&lG z5Z+s%0%nLm&=x?byuSo9LXVd(DkL64T$ARnCyB%K`MdE0iz&iAEn*H+wY8fqkDtsE z)wJK%wi&6#O9j( zL3>incgs^}AZaIiT?b^e+dW?J2Q1ulZf5?G2p&i=6!M{!J#HlTOWyx2jJ(xJ+Nj@P zLM+$|Tw+q^4NP_&d_@fDtxJDd`@N|ggF`n+XBM;9pBv*dJ%dL3jvgg+jIKFw(Wn96j?7(FH1Y5M{%zTy0zohvfXb8N>=#oJYd9B@Co98|M_+` zYBR4cZf9z+>wIl7VMVl8m4#>zajtPW?WR>R9AHFwC02-UomR8oP)H2%o_}lz%LwIJ zh`$oKYm{;RKujZat`Dsx56>NZY9bf71TU#aIz2(o(EHdIaDF=L4# z#!-EKORA(nK7S1|>1)qea3(llc-bd;7jJ^Zkg=0_vR>@2>t^04*(P1nt>44yX^j4H zPs29nTWPvIkqB+tTD=BwOvOG?k^+uVpHE8d2m^#$G?7G zVQ6-m;AL^q@N~w^s{_Njz7scCNw%-T5G)i>`oH>4tx#0+KlhtGh$Xp|c-61X&+~v- zXsia0(ciz4gfGGLO@~a~Dg--ZFI@z5|FfS63m^iC9CB zikStC0*tcb8#>*J)IdsgjB#*Ye=Y3)o0Cc_>g2y$ZIZvSb+o0Rz7{Ju+u8E8FEzSFTc_Lie!qEzVFt@&cE-z1Oj@TcN!eCFXTq~B+Ngu z^z|7zU7*km$g!bT7MnzB$aoe^k}@du-981BWm&_8H$Q(h&pLf-j3DD}{!fB^CfmHE zjGGrcd$1!UP6GzqlTzT~LnSLQU|#W}&D0?pJ`>`)PJO?KY-ZapZ*JO_pVv#l&b?9< ztB@~9?HE#yuz({%6E`rg&8$2!qLhcH1=Zy~>lHWK5r1z6TDiSM0;qXMBVoW8yrU6|$Nyw=+GJCdTVM6Buo0 zBQ8A8V;wDeQWIruOYvSZW5p`VuX;=DtZ5J5Yx)f>eQaGV{f0YrS-rxx*b=sz8}aPY zt1v-&Ki2|>O+lIA!x61SG-jXVC*!rzEu2W-Y^)qiqT~FblJ_*O_GC<7`muJ*yqq9oZs^{zKOxHGkM7qC$&Aj0BB685XL8v5WoUXWv3@bXe6ug0eR%Cf4|j=s?Z*NU6h zHY1mTkAC_6A=yh!KINY$2@H6(gnQH!Vg3tgIybQ?7UP9vW)U@MZiUo5;x3jD+TCa`}BE~Z5UCv08V&JLp;DI2?a^vsD^ zAU9c6;Oo4TbNcsJY4~|?Pi~dMgsP&{T zNts=d5&xz0DZ$n3uw}JNUoz(f&R!GM$S}FCUYu$X!$YS7Wf5}f@ytfv9S`Y9g6{+I z>6qHp@5n*)$8EJ-Agl1YF1vj-~2+&4-tTMXKc3Y7?oMeztPN2a)J@%VyeiqDU z9ZcTL+Y;Hm6lpsd$n!ktM-ne=6l52U{uKyFvFggI`f%I3eAdzCCY#3V&->(G?h;FH z8cE;@@jFG6`!NUN@=Q#x6AlN1a0|`Zm88HekJgmko4x@Ih!t|1mt*nrFs&0h7+;In zIcH^-H`Y-T%c!RnhZy-zp zuIEReMvF_9j1NmYl8X4hCdyKjj(s*?SZzz{w6={iBq2BS-RB zoHA&_;oXybGn`kMAz#d$1g;Mawf$v}rlO3jvK`W?)q>~6a@!VWis7$QAhi7~GWAeZZH`%-)kS();ECVTO9pt5ji(37^a{Q`no_5GrEG z$r4vz3nxV^JkW8cX~SVd{YZKYeZkv)C{T>Cm&V5t7_A~b_VV($o<*dmWd-nPC@JgA zVi3(lfJ4*$5^v9LbF_FhHyi_xmKjL{M{uT)^OFCU#8iCJ_b%zV`%CllEmaS+SW zs!6jToifN_EGAGRrnFq!K=1QR)Fr(Xmq98qoJL)o1#$myZGbzs5wjQXo@rUTTXU~% zXuYcC;OpS9SC^H=x>S^#p#LZ4Z4>e20ZlsI=kg+_O8Lmkw+!g=`7W7cb*^Ft?5x0w zdB{xut+jg}g|}{EK8s`PS+_{kd9T(Ps~RQ@HItug5(ZC{uXrz_~cU zY+T!B;-^xW8X<~#>ajM(QZpI&bST;25&?(tV^6r@&-${669OGc1FG++wtp^t8I?H# zVwk218??y91=vyO<$hMI$|%2OC;$w)ayUfjE%vP!mV($T9hwmi#Eg~V$5XD+7u3`j z)fu5D+n&vgvZ@Vu<@W`*@S5eXwhU+U(edN`L*$I2MO<~vf00XahDT1(dEyT`_fWS3 z%9SILyB?D^oMzGSgN{<+f>%e5SG2ex%EPSbrG7@_EXL8r`R^rU(QnvO{iqBAR1PXJ zc1UkN=qzg7>mGDGd(D5uZFAn+tWrqy=eI8dgH-FM_zCuUghx0eadwo?oL`t_6$8fn1yX7H>aC%sHcPD@?Qc?;JeZ6=Z|)G;@I-jF53^IfFd7ib$!-Y zb}OsW(OU-tXc9F<}-X_SrJN3xHOolsfiLK`Jg|Df|U@_jG3DFo1`qdfbV zc0bL=R3U9)Hl>3V_qheLI?_j5vq2;RKq)*-_Vhe~q5zb6;K2{_Di@jwMS)B@& z?yt7}Wqxh*;nmiIFRC@Hy_hb_3_fnrC1t^2EOk=mt zDuXgP=4V)P9@EW?;XQINnfWf{v9sXU>m?G;JOUM3-vXU)87 znbK|0GnD%T8s=NRwP2;7B8sxRjY7s+KZl(xk=b1h8I>YI4N+T0Ne*7yFzLfLSskU| zm96UcLq~k>>33IFb5>G!7gp+5DaI&7=`FV#U4wOOR^8lK9v zyfmeFluBs1AvBTiRw0Sfj#6L|NpLyMkMQ3Yq`+vf4urnhm?nf z&5A#(-jg~cW+OZPS7*!BD2K>-y`Zdegj~1SKO!8ZUFq}O`aLE(%E%kxz&Uy}UH5t> zm$=?AHU|5$vbf28GS$Z_kELx94Pp3eZfhwOf|d@N7m`4QLzsYJ|fD;Dp&lPrc4|k!MjdoBc1pnsdH;Xqy_g zXiPRg9pa~0*>=ahF8onlXHg7LhHkj%IX~vdElXWXx2_%|npi%Hj9_5^q>jLq)9CLK z-Hj6wh3+RkA$(Lkx!xER?W0^851>X?rm|r!@Hq&YUA9}kzJxAn60DDX%MF5x8;tqk z^$E8ATc1D$uTKDiy2ujOeX^yFr2;{nm_02V#)5V*?HjyDDx8}fU53QbYveg+g75l* z0Efgf@kaNu@$v-C7GHmz5G@Esk)Rjgi+Ey@lE zUTa<1vssEb$hcX=>wNN~&!}wRYh+lV{%Pl)<492KZkK9Ue)%7u%e-;8bSs1I!d|(> zP)zIrrGl?287_d!L?=VvS@umxxBUcgU#BWJkTmmuS5tiJY@klOVM*n{QgKj4`LXd*|vx7?tCB^(3Mdfs_z_ zOxF*t)qf}o@5Ng?jl_`6<7C>Q^&4x8HdZ!acDYXmDMHlrBz(4jIMTPhkWjOrR4;S% zlTXCns*WwnyMzdN*mUg0*+UN1kk&N%{)xtF_}N=>XtJT6QGDYLypM07O7PxE6n=#( z-uAVG4JQdasK2^AoxSA~rsXqybdKry(ad<)__Sp;x`1Sq?*!8BMPe5Gi{$zYW3TaS zyI~hgRr^Ej@e&L1rQsiMi+01m4$=`6tHXpzy7jfSZE{0f*H~fidC;>*L}=Fm8M=ia zivch!1%976K_nVLS>0mduIumeNjj<-#~NDcUvend7%DmgkFno3 zV0D>91Yot&KqNuA_fd@g*Ki{3p^wtF3n^wXDv>X0d>DF9d1aZ59o>LVdnLouRfYQB zBe#h3r_|3L)%8mEeS0EXjXfLh*)yMhKQLJ97Y&w$aQiIpJN(x6ZsVVfX*M#>GX^Uf zNe-GF}`3J@;e%`^oYa zRApD{k2G;54#z=n5rMY(G{WY3BKDTz=yr$5p%v0z&bfXC>V-s$G;J+(cNjZ!vcUwS zpZM!z-*Xeghc!yUw1G4hOUbNRrDso8)B&>kV*PU)lu~uHHWpSqGT1x~M`7wbZ|WH4 z_s8k&Gk&noXL|g)&%7{d8G1OvtM7H&^46#K@1|Z2r1taIXE~0LU#k{K1UzNNs}`*A zMjIwvuYH$(_YaOH*Mx^{Tmjn#nMc-MGKw#!A|^qS5XV*-*Sz_(&?fgz;aUVO^%*0UeQZ$~^2-n#%^^~R!ZQ=552I7mU4e98A6X%}bG$GJ;00sw?Amp+Fh+BNNYENV5A zh0?jyhGkpCd1FyCFCZ?L?L%FOnqp}Etc}?!y(rIJs~S<$E;dI=x>6bdM1tfqv`B?x zUyh22e%`$0J_!?R@K@Qc;qd+5)<-%sM7RyT&F;8iHAVsb+`Y|B<%wOzdQLebC#7~8 zR#CjGKo0?ByIfys*nO{)q!^&7m&Rcm)@tjT${Afyxn=3&Eq?Dd^*JQ&8Q?sJB+ z-=d$wd{@ZdW+dG2B+IlRhDawv<3%%-n1YKWNlj+uAuMGCV2TUUGWFm=zbQQdOlz_C z$lH8m20vw;F&~)zs$aq?)1ZQ1rhiDRzl$y|@?bg5FK$=S;{XN{Zyl2f^R4lZzXvDo z8h&%P<|Prho48bfQ>c-~$cM}OSs)#YQy_uJqH5<{nui6BKtT9TT(YF=2DynDZ#3*J zV8~?kJ#_sZxNMf6tD13#+2OY4-af!Hu#rJe8P6qaGUbo8Hh+&9#<38+4=4i|x%g5= zIZ{e(mTi;KKES&U(1RWYS{EP(!jImp^F~gDK5J)^i_FouS@q6Of8mZ7H)Lnsw18p2 zpt3)&eJYJnpIHgAaNd;%jX5@3vbdNVqrR38Q>n8g3r2*oX!` z1VwR_-ySsFf)qJ>YdSPEbM#0i^y4g22pB=?q|nk0?v0KoOs5)s?-=?-wV6c&^uY`5 zcR0fB^vi1@S_$-=n^~+yo?%%Z=91~Pk`Zm@ONYD)zicBrY|QkB^XaLR$39!8C!Ej+ zIwh)8;!ioA%+GV>Y^t_$8>Bx<5KXm|#7!Nc%AWvg& zh<4oq-9wZV$1bc$RJD0nGlMGv$&GxsME3DDcm0fF<2QU3qQ$DiNTIB4i`iiy!J`f; z$Io^~{mb}nPU#%6jp6AYouOAu?yd)e%F2Sq3ApcX8X5N^%;^iOTz~L~h4C}zP0?Ar zH>-~0%sH$5UE%$B$k228844~NH8J}+%IM+)*M0~exlqseK5wSi_W|jHS6S1W?j~*z zNJL>BEI?kn#@${lhFn@|@$--389-&)*zrU)iVmzaH^1;0FwwG8pmny%QF|EuaqPWg z%7im=&NA_BsKS6ltx0w{?|3*vm>^&xfU2~qdi?12Mc7O6Y^Ud)2u468C2cuh3uz6? z(a8EN7&ejRZD}4H9f{uJ#vi~f6-=@)YU`J$PuS!m)ItUzzVHdFtWy>~Wl&v|#C-T7 zk<9tt+79ey3WVS1zH=opWd96(1)-*3-1Og1Lq}1DwLK*ox4T3zI!0ZlZ+f`gjTV@) zT#7O5;KqB?cfg{RjB*;qGter!kx?AgWh5;6CvR6gz1QccW5P_D6~N#Ma3Z~dNZ{2W z%EGrJTZbuW+vY|iGL95xQXG;)Cy3IOlu1bBXl=_rQ8Kr1tdow)nVwCB^?oQUrp;d) zrNHf@gvAyD7V(xob*g#f=mVOCNVRhTgew6_OIHv(6SJ9I)Ui_wDJ8N!g`7l9-)&Hl z_r)I)9oWWubcD^N+9L?W=;S>}-8i~>IZXCE8#*<35qz7bH$}kA6f_#dIn->CY#=K6 znR1`THa$G^EbOY|(Gl8V%W z_6~W!%kvdkPuU#q<(JzJSg5MUO(U)0AM5T@-mk;o%LftdPWgBM&$2-^!u(B^2M?9r z4j+TBu*g9u-39$}g!mNkMcAfmk@AmL0zt3XDjI&0DpgcYu6WeE8Td>`%8q*2*f2&k zH~>cIN3zbmZ@VFE=JYC#%mb_?#Vgr%5movcV%sTfbUKv$o#;bSd5}Moo0*1v42qok zsppi5j6i~@S@Aq{aVd@nmDd-ZpMzc<#tg zTlU+Zj-L7oNc3POcF8Bxg57*nQOW8Y!;XYM6qvVO+i4@?i_*39j%E42CH=t#-CT5j zu4cJ3R^s4`d1?sNO!Btu+VJ;Fut{y~o=0=f(QHt! z|49!aiu0e$gABXPUm&Plv4Gor>x%frQH`rv(~Tpm^j0yjhs^;l z`s3EJ#V;>~yuPvDvORdY6yz)_4XeN*6Ppva;UGZfha=(fH#`Ac(o@hKEw0LgH-{S! z)@oj&wwpve%)2wbh*92qe#eCmp6eEqRDD&w*n10R|(Tbvlo;Hh4wE^xenM* zIsthbc`4@00*D=&1x0IZ8r-%c*uUwt&F!$W7&Ij4|Bd6+k7owEne!O8zoFx^Z>Fo| zUg$^_ZNVp?vIZsZP-Z9_c7{d2%HSF27v?g~c{eK15UBc&d7KaF3~?H>A_#rKsWJIU zA;Y+RZ(C7vLxFx8X}#05L1NXCA?4_GI09e2$2lf(s!d;kh)y%(MD+2c`);?wc-@m- zQfY~mYrp3tc)I!DE=h2n|8trdz{^|mJkpPmQmP0}0#-*K20;rZO4tQj)TVYrdwE)z zr#ny%4Z1vfRq5Ej@+-nT?jCDX_kAs9EjSGRakU2kQt*)XkbvahE_@+I$)GK-x&->( zZm>~-F08tCg)_5rdd1|xZMWwR7Mn5IH=!+CY~5`YQIXY|G|U(BGd_4cAL1!~ zG-kS^cud*;sc5_t_TUzt8EsXVtkI+0viv+$y(M*rj)3hIYNOz`&WUbiN<6%I zbNOpcN(iH?F|MbV_2rGIQoBibNy#(juWb7t38;x1b1&}-(>o1ExvUm0r4M&KE*&Q% z2pe|ecAGS0N&e@WPC0FZr$ohzVe&#{8BuOJpUt$Vz)%d+nP%uqQ#(sKBWYOynWQ7r zA_r|s-KGsOLL3fD=h$78zWZKCKsQDf<^UBBHUC&gp3bv)^nzE`GlXToS7=3%WTC5S z59HdazN|6Mz_s?zu+wSU9SVP7f!Wbz7OKyJXP`rP27gCO3XJpJLQsBVJKkPOHk#qh zc+ai}yEAtDs@3C7T%>T)aLX36s;NB*6JI$+qQ)bLPXGCQB%jiDkB%q-odXXAP}EN6 zC(r8>9rlPM!S-S%0{4oeN!v8`B)Vs zRI9eG#m|wgY!92(&;N>M4KM#``DsdykH{VtWRFh!r|7~?4%{GG4fPM^_cts3LNd*>vFc%nIM1Jo&56PokXm)abp! z&)2^AL%prppgLO0e5A{W*o+QSU*f2KrTui%7hrmhDgCO>Ois1#m5UR2gbRXM1n zs(@nn%@*mGm}Zr^R=Km+;Zf)MWby@RkHLNl4Zl@;g?=Xiy5y}kv+1b5tF#&6MCVtlM3Lg4^$bFS|+#9RTi5LlRdk9jdS~zqp zNr*ob8rx-fxn$+uyUNmCLi|51;i8k7+E-+%ZVib@b@JSC7#}RvK(+fZGxquOT*H$g>TsHgxjhn;io4Y?n zufK8fhvwS7K)0Lt)FsK9%lr?sJwdN)#kcx@>o5!XkbW9z`R|I%QG7*aWX^nI_zj$K z^J%{6t5>)Nzn{JznUCUwFz3_9wSV!|jXKhO*L9P_wn~7nb%I(q?(|+4TzN5*1J!|ea(^&=_OL63&z%xRQjqs%veUrfN%k}%$rcyfl zI?<)V$N1n^r%cKcjtHC@BcAn$V(;S7P7wI+lR4vSO95E&_!QgWPh4(7KKxI?_y)dU zyhC&Mg+c(%xhFsRWof{Ao${xk=__c92Z0F>?(19Q;2qx7uFJY{gOT*%3&wA;;ZH5e zXf-M~SPAhX2S57Xk^gt({~h`NVwJQFR(E1bZ|7vZ&Cj&!P=@oE3K2e#|Qb4Q~~ zl?2+a4cqHT-z>i*!HpuJf3ZV{=%0@Nq}qOJw)cfHe#i(T&cFfvuzsVHA8ak_frG7ob|{dc~Fy>@1Ox%i{CO#dy_am1hgRsX|De@;}s; zSj?QT`e=}1ByH;2aDG~%w&4UhvmO+k#csqW9j4x!E>XE~B;tFt`J8TYgd0!#@*RHV z?RcB_({R4YSnBGDrTIR6CLMVm4Y9(@B}`Z(KM_RbHRACdO;7|)Nux_(-SG_kdH40X zYwCdY)%LF_9DZ(a%g}Fdm~B{yk?Qqc$ryXcMoh|GQu`e!U>bZaW^lSu>ImPBcC3=Q z@pR#$gAZnMdU~2j2F!Hn=CV8-(RS=capLpoS!rh7;u$EL$; zJqAQHqt&RMZE;HGN?xyI!|8hAf_IQ zZNxltMf)A6a%tr$%*$zrO}lAHA+7=^JW%$2cZK{tC%02^rkE#pKN8bp)Gt88c@(>a z&pWc0oc1=-E*h`Cz0R2dks}UW+PLYuo|`xoER4gyvxPh=cFnut<~wB6i~~e4BThDcTX#8Xd*8aFg;VOOt@p9+kIQN!gEYy} zMxyOTVhATX)hcu1K_t^+gLtu_ax}w8iT zYtX(Jj=qAQKhoJrX5d)blgaXI)cg+==g?&@bHw0OWoY?(Fh_Z;$WzNcjM>B5%d)BQ zgGZeXmFA}4EWUv{tzT85SxcbZY!Jbl^@rUSGK(MRjoJd(dOmsCSje0#CNO$s8+zc3 zb+TV-XUaV4Hz??n`^WN%FC=D5#nqF)EM*?rdMLhZ7y4rcW!e|qAon3@Cm_$Mcv;MV zr2-S%Z>ZhdU&{;Jnf62%XK&~Bw!p3~j!ShldWj|7ZiSM|wit)`BuH1!_-ssOhk+P& z%R%831H84fgjtI7j-z9^FU`d*%E?0|?`?oIMy^@sH*)bBUy}6dB7$pB-_8T zx^)$H**{AF5Nc4U3B6rSKAfjkX!1Lpo4bUs`Me^EdK&ekn*t$6?_wTs_jxq|eMJ06 zAxvw_BV;e{Hr~t4>JrP}BeNI*F5jf)yMmMk0+eKAi_fOjh`{dz>!AE&-ndZ4_@G*q zeqkk?q-i(kV3iO+zhn^r?>v3VL|;&W&q6*vd8>wI$!cfN?xm=_#6WiC!zK5T|9}3!cKIe6m?6D!4K&(0B(j`6jN4+4t0c{p5 zW2$T1`R^O)m%wWP^ImXSzizO2lMQ}JvaU`J_3lX!198`iX_yV($ri!@JwU?0CxrhL zCdvZWjG(=p-w_!Vc2JLd2;wJv{ep{30pUaNm*^A*1Ghx;`o-g?kt4tq{OZQ0$AH22NV8hrNfg)zCS{V-~cDjuVY+Y<7X|Ad_^Mj5b%dBS*{h4_?i$0ASzk1yy^x77Ur>n0{ zuIxB_s7E!N{PU(%`FnJBs*F-+7)v6iwkx=T+p7TJj`m)(DI#xA;QMV;j~!a?Z8cfi zT1Em%G^?vKYCWvjg&HYsBh%L=^8`@SfLaiOM$l4$NpMx=DekJ(l!ai9zwm?|!o}|e z1M!z62_2w!5%|F7tv$Dq{gS7X`_YHcu#WomSaeV?$ZhNsK7n1-LpcLWMIYV4W}ryLr-3!unSne3?fkdr*7NxMR~}uazaF$6 z<-kr!^faJd4!G`)k)u-0JT+IM3#dES*I2}U{Y88Ct_)-;<|OyEyA#FYq{4#_M%&9l ze8oF2D=ru&bNH5Z4e0Pd<=w7tc)z>_CY8HkLbSs^J3x9Y-}}z}oZ2~^008xPlKn^b zQ2POCsHROf$FbC2Td>LW8*Ka)F=D$XYti(Fj;Gdz&KKMIjI{X9oSKuzxg|f=K5X}; zXv@oYcZ-{yz6WE%v-gq~*Bx8lD(L8}n_e_0m${mU<3!hnfGCLvsdFS;fC2mdYC_4T<2PHOJ zxw#Q#t)#9kF3+>K>bOZ1QIR~)bPwXA3m|$HJ_A=rE*{Oi(jIqk^Lgg0h8)y~Y6~?z z&Q^pt2}6uo#n3qgH()sc+x);6o$(KS19vI=dhcQ+L5q41!eb5-(D_@d;u8sT?R8_N zaEtSunq7quOheeG_=o`M%^GvjR~ese14Z8UdWmg0)^MfOb=6&#ls^xj!kgFANbWbO z!T2N>eOsIPfmQ0$@<~&rQrm}iKtY8zQhUm3o%yJ<1+YoIpW=HDxG8r$nVu^Jlhc%i z0M1fl&X{07XGbDukLa1GcYT~ z-^gaBAGX{Y!1Xb-Jyxx+G|H=uOWisTrd6@G*!FRd0UP6a4Dd|mo4r=Q;;oL&x)l)K zjScDc?qi1Wc}B?d?wtWsRO)}GI^5QKH-#TZHO+aFzdcfakDVfwR)=X1CVgarRawKW zVjPymz>;EOV24nd(zb`?$KPN!T{CPzKe`rCbkJR9EW@w?rl|9W}{=8Lc)XScfWpxF} zfWhPmah(PL?75^->2V>sqZqy{!buGhaUs)ZOVrb^2k95KZ?Ne^l%NJWShEWG*zG|~sp~RwbN>N)#y9eKF}ovt@<5+{Gn`<(5tsZp z!;2j4J5V5m$eFEFJx}e;_2M|l@1XX=a>kf>2@A5`seI%Cl{cc$=nB1fj{|nL_t=x< zkr~7W$QVn2u;*;r`3b=XJ22$o*c>!vw$}CIef))YOt1(|v>hbS{q0?V6&mXaN6xdf zPy}RhtVdV`o+iPq`g5G`wtmG?zQs3bT?T@#% zjz|>oaBw8c7072GE*5A^x^qhuSkJ??sQO+~=Qh$w0$IWZa9>XEFSWNjtfzeDa9I86 zL-^93YFRU0wHs5o5b2E;dnz?&;P$$v{aJ||{pTd+eT8&~ni=u|&CFy>HNvDdBseeM z!?NM(WVmui=kGnOfgY-_IKCb?3cFw9qe|em-q}w8sDDWE1BR#;E2>CJ;M%UWn>l;a zx4t(m__6w^QkN~m^D*lN(zLog2Ol$CS=v8N2^{$=2n>b?A0Ud_34)k9X6Jhdgci~KLF0-mM zzI=Vk*VB@u$evED??q2hf87hK2>^ci+^k75jwk7A+L;*_xT*Q1QrAk5>plN&z*}k6%EP|ueG**Bjyq#k?btZkrC#q$HKy5vhft-5w~T>{FV9|MRK$H`K(i4{ zgUUwc2NO0O;jp!dwX}wbF&%~{ne|YZk^9E{cFMdYWaQg*W>wss3rS4wpLf;P^+5Q# z>E2)6*fWi$LiPl+q#&UVgG>;EFTS)q_^_jU5+{9aVSN#<>LPIepR)icDmqybTF&vU zU>P=LN6|ez8H-XCW^|S1i@pBuPzEzb+r(>K3;B7YlqWHwX!HK*W0)m~&k7KqO1 z`<0591BQI?2NMV{n19`;DPP<;z=*5`{*|8W=D&G;v8&a5z4o9V%h|IruHtx9O|T`( z?TjCEiNwW#sf&%q2J51G-kQy7RyEt@L90>7f{Z>Pc8JJ&2Ft$G2<4>gk9zqyP@@O5 zAS|e6W=GAUAaCR1t|-!}a`7DfbU_`qhkIm>`z81ToJqOOO6MZ5+oNOelCQGA)K=iO z&7UBm#I(QR?+pmRFZOaDOUhNL-fV(y3N9imbs>kf^uw2O1W>a5+P^09y&=hMzA}Mr zY}hznw$|bL_J@E?Z7!?Mc79aGCZ$p0KtKH(m+?9(6a~*4u18oH5D@l`3NgF z{A!(5B)rHKADb^)TU`914~njx5og&wSQ1v6T7I|bT>8amFD|l}WyXlMW9?waJ`Dgy z@9}cEv|O=|<8p+o2yuGO<%@{2cIIGYDAx%HhD9d|y|S?x%9lIj>4c#dzPr@q)L`Qx zn9{+=kBf1&Y_NlH>oPMVbwl1YxkMzgJMZs3+(y>08x5L@snVe{T9@2i7x4g5i&IQS z(3Rj27W3Sa@GILYy$bg|tNIM_KIVor0_a{(RPh_t3|59k?Q4Hw!gBS4o)FY_9EQXG z3Inr0xZOqa98&BQ&!4_q9YZ?{@vPWlM}vzOhzxIl+j`ZSPzD2L&pNpvCOBXd=OY5B z+pdO_np5#w)%A|kG$}Z5dK-KT5`+I0NE~zcYG)0b@o}x*Wy5BE4JR-FuDy`FCjPKA zG4gn=3sXsd#%3KI#VS~CryShAe277RvxU%`>0`(l$Gt_V!IW76YSJBic zwX>PH9^>S7E~>1oTzv>K@2qYS7lVHx$QxDVqC$O%_k^1vMwk;RFG23-_7?*-V?v=p zYz2ENQ4Km2^8Y}<+?4p;oouVvCWD7>(1x%_{Cj@tMy?{ZR>hQi&UP6sIvz5{4BZi& z-?;H|DjpgMKu1HKi72&EwGlDYf5Ql4ssBqx_>IDUV1%g|Cg>c)NcBW>1I=N>KW@%a zZuZleu7TpNrA2Lx$asfLehd#uy|`UEq_7(1d8voZu^C{|-v+E7cx_6$9Vh4Mu`J@zSiT4_T595(e$)3eDFm>B+MctlBVP4S9iPb~O)}l>8(Jj!lc@=X(m}?Kn2{SbK zq7!#(UC?YENOzpqmCUL}eqda@uBTUUjz+f3?M;H`&8cUY=Y^o7YN@Ja)d~YoTP+1{ ziFSy?NfJ8999QtzcH5OE<4>CsCrhu5AjEPot6L3Dij!?nI~y}iN)?|pX#A}@ZV=X@bGx`mOZ^ z%7WP!1?ZE0JIUO*UkZHC^&FQQg zfqj%8y_A0(26x6$_O&c`+p{XGD^K5zE2t6pdK!3)FEjd0vRr4=gsP&orGt*x;D_U+ zIL7lvF|VW7c*NW-#jH;#-4mMh7}qW%!Af&h8@k=p$%^3BYd;AK;HowjKAgJ|pB6W* zR7kGvP{CGvMa^sY%nYGgzTi@G*h0yx#K$N*+CCK~F>AD?<77CP-=tw*FOic!YSC1<@MFEqtlL$?%4gCr3{P(aOj62p?+V?JlQdpQ0=Zgj$cl zVh`}RY74zN*w@O{Ev}e3-i9Z;)~j*V-|bjK{Rz7~^jE5HTVDCS|JYmU_8!FjI?s7; z!CvFE^*(ERImvR-&N$>Q^&gh|RrboRd!1Jl%PjeFVlSQd8Xcx%sx$!g&47ZMan_{5 z1SU61zFSAD!VdrsQy;zd_~3ipDNcLEgWNU0&4~osb@k>o=5~azO>%&k=EwMz#sgzv z7W{4ci9b$q6@|A`D`_0RP8ZS;Esf&>ou6>XUCM7e_GwAKbyZ}O)#=Ud&4l9bM)k$Xd|T>w6nM?vrAz% z!|b1FQFwrV5k_WwCAx}#>zJdxoMN|W$f_^#Jn@a|UXmwRi`Z8RXGYAZCvM_h+Hw+W z7bzq>~=Dz zyk;ZtfVz{*kS|x_1k0Uf&d-=RdSm#`7T>sbc1i|V%}co~uUjA=!?|`%bWG|e9 zifAc#UkCZVWtlgu2j5M`NG#7u^&M4qQOntSR*K<30@C*E%j7FnU{AQ?>o$&x=|^L9 zZT&*IeRN}j4mh_1vA=8b~PJfx~uGZCt^0T!1#%5Q}p~@{R=hsQydh&*@y-4=m zKkK4VLjxXw4ch_^>vrP{9K2i4~~871U@TJ=zi+(tp-1?sB% z)BUAzc`d2ETTsCno4zl0C(@$aoj$}QPb-?Fq^kpIfkR+ze=7OHIswVcK~%U-jI z>a8~ly1S-FfO?~>x5lg2{wV?8`KZaqYGc^7YJaimEr{*)bn&9UYoERUz!fydaK2eH zjI#p^f8!48Ua^Ri$mPbtli?qIURxHkef%dL8U2Md>GULw@9J7i=3gZMM~L?Q0g`^kGM zU7OrdEr@}x+syT;6fq7sk%`TLzSA44xWmVC@|ZCJlGQ@7vZqlO;$W}Q5$4jFi44el`O`r(!~gfZk$bYk^1{%TZ_TlU%m{;jABc- ztgix(HJX%B>@FfKEm|UFXYDyPS%FYn!Y5}cB=1+fp9q0kI=$Ekgpzh(QUz8%1r*9xuE^n#IM)Z2$q;6z4m&%*m{{nv5z-)t0K z#ygCzzoL_7Z-NIvPiCCvDmg1AO>7ApgKeQ6r+(N z+CJ7jhGuV4Ijpw259umrSM=gPp~<*ZZ4b^z>l_8=NqI#inaSP zjDU=oQ0jSl0y|C#VMy&^Ut3XK(30mX&jmkMO@zdpkp=&d>E2WQQ2OxR7%b)WWg^|{ z|E(A)aitfKd$D9fldVMGQ1J~wJOkPa|suQ6X@2_4Ng zyq>$c@ch8ODNRnhNIz6`p>?@PzK_#e?!!;6>8wK&Lt9KNi$b;$%J)D#4x;><#m%z} ztmkp@Tsv^2WY(n_-~tEw_FCmi0ubrR&3rZE@|lz7I0C{>)JQ=rj~1#4R1z${yZDXu zyhjRfJkhI3F7v;It=p&(!2krjM2b*#61rp8+_PD5I`Pi_VzK$DI#hjyo*E_YV48B) zrMyAyTTn3zDp?9`?tPwv|1EjOy7{G^MjsqUh`>>jDsO{c<5ZJVX#k zM$4|N}Bbh-I1RkP9$~=jkoXfXiS>(EvS&N(p{dLHCpdu>Z%j3gg`cyZ4vqZpLqEVFBq1 zHuf~`1u1~IetyICxsX~-OTW6qh~lc&^@^76kJ?5oV`|Gv9rwOL!ttqe4-*{2m0q!Xr}MkE=m)36)Qk7~vr(y)6LtvkUX}!N zhNo@y4Had(`I`#J z`BrrZMB6w=(D@PeZ{f4$s3oIp-X8v!_i9d4X(h~QN{VG{^-iA$5jMjm?~!Xki)hWn zX(TEL$xpm~pR4qU!zDR{mT_=r=bt>HDfB+_JReF)!xmJpeMrLcs(R5QOCw&Bw;GXS zdd>+jyxVuniGnRCMUkyoTo_%4t+>OaN(%Tar$v}&O~QMJRaBWR!N5+0mg+X?c>uP! z#)~<_ihH0!W|dt_y;F(c%{u`bKX)O2rB2o@_hPWY$=r((r37MxkxZE8^B=sq4c8za z>^pf*2~{VPeuiDq(!|s~e#ubV3~}wul$>Ml;;Y6Up(`pg{IY;_PJ=ZXsUF6#Bg&qb zX-OZ2&|E12kkypK*urYUoO%;bU1S)TST+vStmptPfBHYCNG+PLgk~Ma7^XA>rkZIt zaic4pRh2O_OuKGxbQmhHqTVw1Hk^lgF&w_U0J6FQCfz-BrqmFh8>5%zOFfP;>e3ZDF0+1VYZ2_Q85jLTCs+;zGxYD8ni2awJ0uONn^$(p-% zw9F-kp9k}zR+~9PG&dg<*82@?KEv%xa^3U$&9MvM6{w&amZRk z(zdwMN{q6h?z6LtmEGlvX|~U+^t;@EH;1){70)6~Yyez+rB&}EFVP{;%-RQjci5~R z7<_GI=KCgbt(wO_o3}kD#w^e=?6S+WKqc0#UlP}#oS$8~f)4qV4}C&8Gqi)|w&N z(zG4~;_5{C5+zhThxWut`zC&~$IR8B(KFhFixBd^a2zRKZ8h9n|K=ip{1@wdSLwB; ztI2&?^;$1=S9AT1uNis`u-rR>hVeKn&No-5BvBIuxHic`I&XX!-s9ZOCDF0hYO6cV zr%S|g+Ns4{@uYo9R9{1CEhvF4rxU48W)7RhPuYWGf1aD{QU3$zL|idfhR(HoI~K>% zP*;y2yAYspRB;D@6YDo|&pwvu1+?4|v}vdAHdOTztq!V~aV$|OH5T4a4d^pb+1MJa zVms-Acgt62fAYto!+2|nO>DyKCHHpPkZRv|78+;e<7qD6I0-Fm5D>A58bmX4eNpFk zIbEn|zGZFmYBRfbr_Yj)S)@l{X`O=6IUI>iT;PdLbCo2{CBBr`I4P>G7#_osGtp6$ zs9a@Lj@`=jPS%v*&ASefv4l(Sl&w_9=&q2mGwiO|R{rAYf=uNSj^jE3(<_lHhAKJ* zVibGJveq!dQoS&7fsxk{(S4banlDy@4aNgB^c*2jvf@5{YM4u*n}8o-Jf;{8Gb!1zF~%v6iXgpSbfNU!e*Y&3r-oLV z8Fdtn^b3q=;3`fJGPTw3Y;(JUJb_$G-F%*~zU#Tv_Q#ymRXw_k4%tNg2d4*F$s0j~ z6Mb{gjZaeB#Q{2oXDdTPXIoo;(gG1Bh?5Di3zytlTQf0evh-E5rNj>`!GGf{=>&40 zKBPL-5otz-{61DLc!KeVZuen-qN6aQ4L|LmZT`Rs0y1GiW;j{z?sDOw(yILy27xY; z%=DDo)?x(yK4TS%hvcNEN(IQgO`Z6-o~Aztos_yW#i(jEX6%-M5#lktIvxv) zaf_FI>r%wweH_VynL`lbU>_L!le6g6=G)P5I?OP!Nbcc7h2t65(#dUo%`i|oAw3QX zigqgkqj1wg=Fd5)Ga_dEbP^s}La56wl!f^I7SE6@{>Htx*&lGXH_WmQ(7S%*c+jlg zef~^(>PlOcWA%+${)B{;iedbga9Ek!L|Lqi{cnnttWC(LeQX8n<SUPV8wJ&p^&0YV`0u{`#WEjsyLcz%PT>-&qc zTZCwYGvrOygN$3uV5sU?LJ?aF7~Rxr@(*b9b?$$pN7*!KNDE%wQmL5bVP?P_+_#U* zSW7SlNc`c)Mn8;TX5*rXIL%Zu6=`Sxa5{NCrent(jpeBj+byCXSKX-v8p@Udg)gr3@z;sI6z+J1eP zhVQ;Ar6mu#(e8TZU;-L3Jnc$z9TYd0vK~Eu=&h>){KBfU|Jiax2EFE!$LWK9(l3t1 z*^{xqQRld&0Mq1YsZrJRp98->!>n31<2=5LhnvBX>zley_o#@q|9j7>EWOjnj*CtL zae2wUlsAT9cw4&5K;wtFyqJ^X4$>PiGr&lk(C>Ztj~1VlEA+cE!!4YN_7|IvZU@dW zf1iv}Epffo^PPW*(ep(gHBpRGFs6KHyo%8vrofnU%|hoN8svZbl2`xpgAO7)1& zzmaiIpCy(Fp|TX1e!nTkheU^X;`Y}w%Yqh@d_!YnMoOA42E6vh`{&eY=6?rZ^F_u3 z42LIERtcoa>H`?@WXbU~&egsovsiQzThj9A?Y#w691_foU>G#}D2KItF0rISQL{!&{AZ$ZPg>#LhyD-V*+{>ST#P3WA}9Ha7u97C^= zmB-~0T}ig%qH}uHR&jUQT3`T*69Z}Da5<2JPpc5|`%CRLDc_V~IL=89qpII*qO%`l z+>TCxEb)&ghy0VrRQY#2rU3Nv;5PrhisQEH@qKv6c(B~b*i+GIbTLy!T<{MZ(}-mB$x8wrOgLZnr?q`~{#Sw}kLOvpR?pnc zwbS9{AtFJw#ISYIvak`yFiiXeByqJ4>3zeN_joABqZu9gi#|it?ADus{Hu4WH!(s? za*hlPmAj%iEGARMl*12hY>|(%*69Hv4alA)g-6cZ&6V6{}K3( zIH_D?TAp=P7dtge9`~F*4io11;-Y+aq<-EOFVZE3Q??qEG#nItgddz2q+Bku4hvmR z&0UwL&KQy%r9Z$>o1domG56$M6@Sim^jq6;d$87e6O0_EZDd93Cwj%ZY8Tz@dbrzP zRUe?=u4R89wBc&oin>SbgXavPERBtC)y?%qZ}n!rS)b5S@bmBegh&}Bv zrh#MdA|gt$ClL|87z#@-&w) z_-msITwW0Ulleh2I;!*uG;VOrz$w|U;=ere9=LKoF;FV`x_Vy1mGFb#aYWN~ojK** zs?|l4dDqg>5CrnB;;>J&-2_AHQjIx&y5><^C%w0doucb-QA2i(x)bt`yh+1p8R61-zq z*j9@(k&$?Pj6y2Q;7F?$+Dq2xtw4zGjw9_~{pfw!JMkK&!aD+L0TK`(bezxEByLn&)A%|u zT|5aC%TM4GYu3%AdbH4^do!-_BPWw)1^#QJHOw(=_&AYtJ9&a{w=v8jhBgh{WQ>u+ z1-QFJc*fvEF~~1An1a``e8RBoL%Ph!p3YKgqU_xISW`a+iedAIv&U!Ih=mW$Sc+DD=-A0o}wnB#h4LyQ_s& z;nb#@8S5bh2Rzg0VjQgZTgkhZC3ke-=R+yipM4g_Rz|*iBW{SkmR@XEXbs^$I$|!U zJ$OSDU$bA213AJ%Jz2DdD-u9^6$L2pq15J}=25!_Z>w{A{yqM&;-9bo22EK}w#KJA zzZY^w|BW&QP`#h!B00eGG54yh;9R#!z9ta6Zva)fiE3*3Mnb(v-zxD}!oa2AW;Sp^_Ae+U)oOO7z+V$2T0yO)aRu^KNu zFc-viawg|+lJAN3m&Xt2W+n`@-<1;iqV0Yey{DjK zZkjhBnFSOqDPd69J;tz98bvz>)ACT2`L@GN=D4KLvcE|<%MSV@0tVe-_9KG6$8mOC zJuB&U(Tjf>0y7Zy-n={u0nXKHvb?*@w7Fx^BxtP7$rK{c(Oyu)1U>A3FS{3AJ^vN& zhnW6CwpWZoKG3G_Xz*>qc-maIkHlgJsr*`srw0j_oVGhbdUt816Hfgfq^Q2ga<~-L zUi3Id{^n41l|JaKXo-MPHTzC_^3tZ(Ar-3d`MY1o-P#rA#vo2Q57dHW3*f9?CL!8j zZ#QbvMT!1au(08eI0i-~{?9P#X=QdQb_BsgpXgleF;u(BUM99@DDFkts`Fy&+TtwQ zkA+TK$8fQepE@;MXh_kVN>TA)IA+<<0?U5ioXg^GSdZLNyZN{o>ptB3@&Z#$oV~jl zn|9)WFpN?o6csdikVJtxh-I~^#c6B-SS7P0Klbd#40?Dtgb($YR`OhHRYiZ*3{$R9 zOt-iz;S5CQ6!K@{$_H69A$JGCA}HVmYkKhjGX!dcr#CrdMdWy;7uEZf&x?uj_4eu( z0ZtY#LM*CiWipQ|~nhBQj{s)SkaNI;7bg%I@IXo zl%L}0(yNv!g{h$AJ@m46!m28=eMh4$ZRJ<9*Oonn17Y*4k6yAVLAU{TD76b65!S6@ ztj{`Xi4b$Mtk2#7sm{5|7dtXxb~Nk+7J~59rWjIZ14>C1t!8Asy5f*iM+Mpzv{4AL zPxFU)1CDnVn=fMTmĂ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 TfQSM9p#lOisa=4;4#@ulMBzh; literal 0 HcmV?d00001 diff --git a/tutorials/spice_howtos.html b/tutorials/spice_howtos.html new file mode 100644 index 0000000..ced8ac6 --- /dev/null +++ b/tutorials/spice_howtos.html @@ -0,0 +1,708 @@ + + + + + + + + + + +planetarypy - SPICE with planetarypy HOWTO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    + + +
    + +
    + + +
    + + + +
    + +
    +
    +

    SPICE with planetarypy HOWTO

    +
    + +
    +
    + Several useful SPICE related HOWTOs posssible to do with planetarypy +
    +
    + + +
    + + + + +
    + + +
    + + +
    +

    Surface calculations on the Moon

    +
    +
    from astropy import units as u
    +from numpy.linalg import norm
    +
    +from planetarypy.spice.spicer import MoonSpicer, MarsSpicer
    +
    +
    +
    moon = MoonSpicer("2022-02-22")
    +
    +
    +
    moon.time.isoformat()
    +
    +
    '2022-02-22T00:00:00'
    +
    +
    +
    +
    moon.solar_constant
    +
    +

    \(1388.4482 \; \mathrm{\frac{W}{m^{2}}}\)

    +
    +
    +
    +
    moon.set_spoint_by(lat=0, lon=0)
    +
    +
    +
    moon.aspect = 180
    +moon.tilt = 30
    +
    +
    +
    moon.F_flat
    +
    +

    \(497.68762 \; \mathrm{\frac{W}{m^{2}}}\)

    +
    +
    +
    +
    moon.F_aspect
    +
    +

    \(449.48514 \; \mathrm{\frac{W}{m^{2}}}\)

    +
    +
    +
    +
    moon.F_tilt
    +
    +

    \(412.53511 \; \mathrm{\frac{W}{m^{2}}}\)

    +
    +
    +
    +
    moon.subsolar
    +
    +
    array([  622.78676959, -1621.28270346,   -46.23629622])
    +
    +
    +
    +
    moon.local_soltime
    +
    +
    '16:35:58'
    +
    +
    +
    +
    # MoonSpicer returns km (as all calculations in SPICE do)
    +# use astropy.units to convert to other values
    +norm(moon.body_to_object("EARTH")[0]) * u.km
    +
    +

    \(375365.92 \; \mathrm{km}\)

    +
    +
    +
    +
    (norm(moon.body_to_object("MARS")[0]) * u.km).to(u.AU)
    +
    +

    \(2.0379563 \; \mathrm{AU}\)

    +
    +
    +
    +
    mars = MarsSpicer()
    +
    +
    +
    mars.utc
    +
    +
    '2023-06-27T18:37:50.876055'
    +
    +
    +
    +
    mars.l_s
    +
    +
    83.31658188802474
    +
    +
    +
    +
    mars.goto('inca')
    +
    +
    +
    mars.spoint
    +
    +
    (220.09830399469547, -440.60853011059214, -3340.5081261541495)
    +
    +
    +
    +
    mars.aspect=180
    +mars.tilt=30
    +
    +
    +
    mars.F_flat
    +
    +

    \(0 \; \mathrm{\frac{W}{m^{2}}}\)

    +
    +
    +
    +
    mars.F_aspect
    +
    +

    \(0 \; \mathrm{\frac{W}{m^{2}}}\)

    +
    +
    +
    +
    mars.set_spoint_by(lat=0, lon=0)
    +
    +
    +
    mars.F_flat
    +
    +

    \(339.2043 \; \mathrm{\frac{W}{m^{2}}}\)

    +
    +
    +
    +
    mars.F_tilt
    +
    +

    \(397.92501 \; \mathrm{\frac{W}{m^{2}}}\)

    +
    +
    + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tutorials/tutorial.html b/tutorials/tutorial.html new file mode 100644 index 0000000..48736d5 --- /dev/null +++ b/tutorials/tutorial.html @@ -0,0 +1,1743 @@ + + + + + + + + + +planetarypy - Tutorial + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + +
    + + +
    + + + +
    + +
    +
    +

    Tutorial

    +
    + + + +
    + + + + +
    + + +
    + + +
    +
    from planetarypy.pds.apps import find_indexes, get_index, find_instruments
    +
    +
    +
    find_instruments?
    +
    +
    +
    Signature: find_instruments(mission: str) -> list
    +Docstring: Find existing instruments for a mission.
    +File:      ~/Dropbox/src/nbplanetary/planetarypy/pds/apps.py
    +Type:      function
    +
    +
    +
    +
    +
    find_instruments("mro")
    +
    +
    ['hirise', 'ctx']
    +
    +
    +

    Now, seeing that the CTX instrument is supported, one could ask what index files (= catalogs) are available, using the dotted code for mission.instrument:

    +
    +
    find_indexes("mro.ctx")
    +
    +
    ['edr']
    +
    +
    +

    We only have one index file for EDR data. Let’s get it, using the now 3-segments dot-code (it returns a pandas Dataframe):

    +
    +
    index = get_index('mro.ctx.edr', refresh=False)
    +index.head()
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VOLUME_IDFILE_SPECIFICATION_NAMEORIGINAL_PRODUCT_IDPRODUCT_IDIMAGE_TIMEINSTRUMENT_IDINSTRUMENT_MODE_IDLINE_SAMPLESLINESSPATIAL_SUMMING...SUB_SOLAR_LATITUDESUB_SPACECRAFT_LONGITUDESUB_SPACECRAFT_LATITUDESOLAR_DISTANCESOLAR_LONGITUDELOCAL_TIMEIMAGE_SKEW_ANGLERATIONALE_DESCDATA_QUALITY_DESCORBIT_NUMBER
    0MROX_0001DATA/CRU_000001_9999_XN_99N999W.IMG4A_04_0001000400CRU_000001_9999_XN_99N999W2005-08-30 15:40:21.549CTXNIFL505610241...0.00.00.00.0278.8910.160.0Instrument checkout image of spaceOK-4242
    1MROX_0001DATA/CRU_000002_9999_XN_99N999W.IMG4A_04_0001000500CRU_000002_9999_XN_99N999W2005-09-08 15:59:45.313CTXNIFL5056153601...0.00.00.00.0284.484.60.0Calibration image of the MoonOK-4126
    2MROX_0001DATA/CRU_000003_9999_XN_99N999W.IMG4A_04_0001000600CRU_000003_9999_XN_99N999W2005-09-08 16:03:37.927CTXNIFL505620481...0.00.00.00.0284.484.660.0Calibration image of Omega Centauri (globular ...OK-4126
    3MROX_0001DATA/CRU_000004_9999_XN_99N999W.IMG4A_04_0001000700CRU_000004_9999_XN_99N999W2005-09-08 16:08:23.841CTXNIFL505620481...0.00.00.00.0284.484.740.0Calibration image of Omega Centauri (globular ...OK-4126
    4MROX_0001DATA/CRU_000005_9999_XN_99N999W.IMG4A_04_0001000800CRU_000005_9999_XN_99N999W2005-09-08 16:11:18.649CTXNIFL5056215041...0.00.00.00.0284.484.790.0Calibration image of the MoonOK-4126
    + +

    5 rows × 51 columns

    +
    +
    +
    +

    You might have ssen, that planetarypy realized that the existing index on my disk was outdated and proceeded to get an updated one.

    +

    The warning is about badly formatted data on the PDS for which planetarypy had to force path names to the correct letter case. This is not something we can influence, but we reported the issue at the PDS, and here, we just let the user know, that we fudged around that issue.

    +

    Note that the catalog ascii times have been converted to proper datetime objects, using the utility functions in planetarypy.utils. This means that you can use these times to create proper plots over time in case you are interested in catalog statistics.

    +
    +
    index.IMAGE_TIME
    +
    +
    0        2005-08-30 15:40:21.549
    +1        2005-09-08 15:59:45.313
    +2        2005-09-08 16:03:37.927
    +3        2005-09-08 16:08:23.841
    +4        2005-09-08 16:11:18.649
    +                   ...          
    +142363   2023-03-01 00:01:37.834
    +142364   2023-03-01 00:15:17.076
    +142365   2023-03-01 00:19:04.486
    +142366   2023-03-01 00:29:24.818
    +142367   2023-03-01 00:43:08.662
    +Name: IMAGE_TIME, Length: 142368, dtype: datetime64[ns]
    +
    +
    +

    Using standard pandas operations, we can now filte the data down, and identify a data product we are interested in:

    +
    +
    index.columns
    +
    +
    Index(['VOLUME_ID', 'FILE_SPECIFICATION_NAME', 'ORIGINAL_PRODUCT_ID',
    +       'PRODUCT_ID', 'IMAGE_TIME', 'INSTRUMENT_ID', 'INSTRUMENT_MODE_ID',
    +       'LINE_SAMPLES', 'LINES', 'SPATIAL_SUMMING', 'SCALED_PIXEL_WIDTH',
    +       'PIXEL_ASPECT_RATIO', 'EMISSION_ANGLE', 'INCIDENCE_ANGLE',
    +       'PHASE_ANGLE', 'CENTER_LONGITUDE', 'CENTER_LATITUDE',
    +       'UPPER_LEFT_LONGITUDE', 'UPPER_LEFT_LATITUDE', 'UPPER_RIGHT_LONGITUDE',
    +       'UPPER_RIGHT_LATITUDE', 'LOWER_LEFT_LONGITUDE', 'LOWER_LEFT_LATITUDE',
    +       'LOWER_RIGHT_LONGITUDE', 'LOWER_RIGHT_LATITUDE', 'MISSION_PHASE_NAME',
    +       'TARGET_NAME', 'SPACECRAFT_CLOCK_START_COUNT',
    +       'FOCAL_PLANE_TEMPERATURE', 'LINE_EXPOSURE_DURATION', 'OFFSET_MODE_ID',
    +       'SAMPLE_FIRST_PIXEL', 'SCALED_IMAGE_WIDTH', 'SCALED_IMAGE_HEIGHT',
    +       'SPACECRAFT_ALTITUDE', 'TARGET_CENTER_DISTANCE', 'SLANT_DISTANCE',
    +       'USAGE_NOTE', 'NORTH_AZIMUTH', 'SUB_SOLAR_AZIMUTH',
    +       'SUB_SOLAR_LONGITUDE', 'SUB_SOLAR_LATITUDE', 'SUB_SPACECRAFT_LONGITUDE',
    +       'SUB_SPACECRAFT_LATITUDE', 'SOLAR_DISTANCE', 'SOLAR_LONGITUDE',
    +       'LOCAL_TIME', 'IMAGE_SKEW_ANGLE', 'RATIONALE_DESC', 'DATA_QUALITY_DESC',
    +       'ORBIT_NUMBER'],
    +      dtype='object')
    +
    +
    +
    +
    index.EMISSION_ANGLE.describe()
    +
    +
    count     142368.0
    +mean      4.396005
    +std      18.999974
    +min            0.0
    +25%            0.1
    +50%           1.56
    +75%           5.94
    +max          999.9
    +Name: EMISSION_ANGLE, dtype: Float64
    +
    +
    +
    +
    index.LOCAL_TIME.describe()
    +
    +
    count     142368.0
    +mean     15.055919
    +std       1.427996
    +min            0.0
    +25%          14.65
    +50%          15.12
    +75%          15.53
    +max          23.99
    +Name: LOCAL_TIME, dtype: Float64
    +
    +
    +
    +
    angle_filter = index.EMISSION_ANGLE < 1.0
    +
    +

    Let’s also calculate a mean latitude and longitude instead of the image corners, for rough location filtering. As a habit, we recommend to assign lower case letters to column names that we add on top of the PDS ones:

    +
    +
    index = index.assign(
    +    lat_mean=(
    +        index.UPPER_LEFT_LATITUDE
    +        + index.UPPER_RIGHT_LATITUDE
    +        + index.LOWER_LEFT_LATITUDE
    +        + index.LOWER_RIGHT_LATITUDE) /
    +    4)
    +
    +
    +
    index = index.assign(
    +    lon_mean=(
    +        index.UPPER_LEFT_LONGITUDE
    +        + index.UPPER_RIGHT_LONGITUDE
    +        + index.LOWER_LEFT_LONGITUDE
    +        + index.LOWER_RIGHT_LONGITUDE) /
    +    4)
    +
    +
    +
    index.info()
    +
    +
    <class 'pandas.core.frame.DataFrame'>
    +RangeIndex: 142368 entries, 0 to 142367
    +Data columns (total 53 columns):
    + #   Column                        Non-Null Count   Dtype         
    +---  ------                        --------------   -----         
    + 0   VOLUME_ID                     142368 non-null  string        
    + 1   FILE_SPECIFICATION_NAME       142368 non-null  string        
    + 2   ORIGINAL_PRODUCT_ID           142368 non-null  string        
    + 3   PRODUCT_ID                    142368 non-null  string        
    + 4   IMAGE_TIME                    142368 non-null  datetime64[ns]
    + 5   INSTRUMENT_ID                 142368 non-null  string        
    + 6   INSTRUMENT_MODE_ID            142368 non-null  string        
    + 7   LINE_SAMPLES                  142368 non-null  Int64         
    + 8   LINES                         142368 non-null  Int64         
    + 9   SPATIAL_SUMMING               142368 non-null  Int64         
    + 10  SCALED_PIXEL_WIDTH            142368 non-null  Float64       
    + 11  PIXEL_ASPECT_RATIO            142368 non-null  Float64       
    + 12  EMISSION_ANGLE                142368 non-null  Float64       
    + 13  INCIDENCE_ANGLE               142368 non-null  Float64       
    + 14  PHASE_ANGLE                   142368 non-null  Float64       
    + 15  CENTER_LONGITUDE              142368 non-null  Float64       
    + 16  CENTER_LATITUDE               142368 non-null  Float64       
    + 17  UPPER_LEFT_LONGITUDE          142368 non-null  Float64       
    + 18  UPPER_LEFT_LATITUDE           142368 non-null  Float64       
    + 19  UPPER_RIGHT_LONGITUDE         142368 non-null  Float64       
    + 20  UPPER_RIGHT_LATITUDE          142368 non-null  Float64       
    + 21  LOWER_LEFT_LONGITUDE          142368 non-null  Float64       
    + 22  LOWER_LEFT_LATITUDE           142368 non-null  Float64       
    + 23  LOWER_RIGHT_LONGITUDE         142368 non-null  Float64       
    + 24  LOWER_RIGHT_LATITUDE          142368 non-null  Float64       
    + 25  MISSION_PHASE_NAME            142368 non-null  string        
    + 26  TARGET_NAME                   142368 non-null  string        
    + 27  SPACECRAFT_CLOCK_START_COUNT  142368 non-null  string        
    + 28  FOCAL_PLANE_TEMPERATURE       142368 non-null  Float64       
    + 29  LINE_EXPOSURE_DURATION        142368 non-null  Float64       
    + 30  OFFSET_MODE_ID                142368 non-null  string        
    + 31  SAMPLE_FIRST_PIXEL            142368 non-null  Int64         
    + 32  SCALED_IMAGE_WIDTH            142368 non-null  Float64       
    + 33  SCALED_IMAGE_HEIGHT           142368 non-null  Float64       
    + 34  SPACECRAFT_ALTITUDE           142368 non-null  Float64       
    + 35  TARGET_CENTER_DISTANCE        142368 non-null  Float64       
    + 36  SLANT_DISTANCE                142368 non-null  Float64       
    + 37  USAGE_NOTE                    142368 non-null  string        
    + 38  NORTH_AZIMUTH                 142368 non-null  Float64       
    + 39  SUB_SOLAR_AZIMUTH             142368 non-null  Float64       
    + 40  SUB_SOLAR_LONGITUDE           142368 non-null  Float64       
    + 41  SUB_SOLAR_LATITUDE            142368 non-null  Float64       
    + 42  SUB_SPACECRAFT_LONGITUDE      142368 non-null  Float64       
    + 43  SUB_SPACECRAFT_LATITUDE       142368 non-null  Float64       
    + 44  SOLAR_DISTANCE                142368 non-null  Float64       
    + 45  SOLAR_LONGITUDE               142368 non-null  Float64       
    + 46  LOCAL_TIME                    142368 non-null  Float64       
    + 47  IMAGE_SKEW_ANGLE              142368 non-null  Float64       
    + 48  RATIONALE_DESC                142368 non-null  string        
    + 49  DATA_QUALITY_DESC             142368 non-null  string        
    + 50  ORBIT_NUMBER                  142368 non-null  Int64         
    + 51  lat_mean                      142368 non-null  Float64       
    + 52  lon_mean                      142368 non-null  Float64       
    +dtypes: Float64(34), Int64(5), datetime64[ns](1), string(13)
    +memory usage: 62.9 MB
    +
    +
    +
    +
    lat_filter = index.lat_mean.between(-80,-60)
    +lon_filter = index.lon_mean.between(0, 10)
    +
    +
    +
    index[angle_filter & lat_filter & lon_filter]
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VOLUME_IDFILE_SPECIFICATION_NAMEORIGINAL_PRODUCT_IDPRODUCT_IDIMAGE_TIMEINSTRUMENT_IDINSTRUMENT_MODE_IDLINE_SAMPLESLINESSPATIAL_SUMMING...SUB_SPACECRAFT_LATITUDESOLAR_DISTANCESOLAR_LONGITUDELOCAL_TIMEIMAGE_SKEW_ANGLERATIONALE_DESCDATA_QUALITY_DESCORBIT_NUMBERlat_meanlon_mean
    1267MROX_0035DATA/P03_002074_1155_XN_64S004W.IMG4A_04_1008005C00P03_002074_1155_XN_64S004W2007-01-05 01:02:50.418CTXNIFL5056122881...-64.59225779573.9161.5316.0290.1Dunes in Wegener Crater in MOC R15-01815OK2074-64.594.61
    4551MROX_0165DATA/P09_004738_1020_XN_78S008W.IMG4A_04_1014016300P09_004738_1020_XN_78S008W2007-07-31 14:55:12.379CTXNIFL5056522241...-77.97210058626.6286.9315.3690.4South polar landformsOK4738-77.9655.9325
    4677MROX_0173DATA/P10_004883_1020_XN_78S005W.IMG4A_04_1016007800P10_004883_1020_XN_78S005W2007-08-11 22:05:40.494CTXNIFL5056522241...-78.09211455781.6293.8215.2790.4South polar seasonal cap edgeOK4883-78.084.57
    5184MROX_0197DATA/P11_005252_1199_XI_60S008W.IMG4A_04_101900A800P11_005252_1199_XI_60S008W2007-09-09 16:17:03.275CTXITL5056143361...-60.18215826377.3310.9214.5890.1South mid- to high-latitude craterOK5252-60.18758.6425
    5395MROX_0209DATA/P11_005384_1066_XN_73S007W.IMG4A_04_1018017C00P11_005384_1066_XN_73S007W2007-09-19 23:03:52.412CTXNIFL5056358401...-73.48217613174.8316.8514.8290.3Sisyphi CaviOK5384-73.487.05
    ..................................................................
    133106MROX_4264DATA/U09_074575_1037_XN_76S005W.IMG4A_04_117A02AC00U09_074575_1037_XN_76S005W2022-06-24 05:06:01.401CTXNIFL5056522241...-76.26206646214.2252.8915.9690.4Sisyphi Cavi regionOK74575-76.25754.98
    133926MROX_4298DATA/U10_074878_1161_XN_63S005W.IMG4A_04_117C022300U10_074878_1161_XN_63S005W2022-07-17 19:55:57.184CTXNIFL2528245761...-63.93207381603.7267.8415.3590.2Southern highlandsOK74878-63.945.53
    134438MROX_4315DATA/U10_075023_1075_XN_72S001W.IMG4A_04_117C042B00U10_075023_1075_XN_72S001W2022-07-29 03:04:41.315CTXNIFL505671681...-72.61208145471.6274.9415.4190.1Ride-along with HiRISEOK75023-72.62751.005
    135612MROX_4352DATA/U12_075498_1055_XN_74S006W.IMG4A_04_1180007200U12_075498_1055_XN_74S006W2022-09-04 03:17:19.126CTXNIFL505671681...-74.52212296356.7297.6915.1390.1Ride-along with HiRISEOK75498-74.5356.62
    136976MROX_4402DATA/U13_076012_1155_XN_64S004W.IMG4A_04_118201BB00U13_076012_1155_XN_64S004W2022-10-14 04:35:24.111CTXNIFL505671681...-64.62218924928.8321.0814.7190.1Ride-along with HiRISEOK76012-64.62753.995
    + +

    119 rows × 53 columns

    +
    +
    +
    +

    Copying a PRODUCT_ID, we can now automatically download it via the CTX utilities:

    +
    +
    pid = "P03_002074_1155_XN_64S004W"
    +
    +
    +
    from planetarypy import ctx
    +
    +

    Above could issue a warning that is about not finding an ISIS installation, which is required for SOME of this library’s features. Make sure your current environment has the environment variable ISISROOT and ISISDATA defined, so that planetarypy can find the ISIS tools, in case you want to use functions related to them.

    +

    Now let’s use the CTX class to access data:

    +
    +
    data = ctx.CTX(pid)
    +
    +
    +
    data.download()
    +
    +
    File exists. Use `overwrite=True` to download fresh.
    +
    +
    +

    The data was downloaded to a mission- and instrument-based storage folder that was defined the first time you imported planetarypy. You can verify it’s location by looking at the config object:

    +
    +
    from planetarypy.config import config
    +
    +
    +
    config.storage_root
    +
    +
    Path('/home/ayek72/mnt/slowdata/planetarypy')
    +
    +
    +

    We can now read the data into a multi-dimensional xarray, which supports elaborate indexing via its coordinates.

    +
    +
    data.edr_da
    +
    + +
    + + + + + + + + + + + + + + +
    <xarray.DataArray 'P03_002074_1155 EDR' (y: 12288, x: 5056)>
    +[62128128 values with dtype=uint8]
    +Coordinates:
    +  * x        (x) float64 0.5 1.5 2.5 3.5 ... 5.054e+03 5.054e+03 5.056e+03
    +  * y        (y) float64 0.5 1.5 2.5 3.5 ... 1.229e+04 1.229e+04 1.229e+04
    +Attributes: (12/19)
    +    BANDWIDTH:                  
    +    CENTER_FILTER_WAVELENGTH:   
    +    DATA_SET_ID:                "MRO-M-CTX-2-EDR-L0-V1.0"
    +    FILTER_NAME:                
    +    INSTRUMENT_ID:              CTX
    +    INSTRUMENT_NAME:            "CONTEXT CAMERA"
    +    ...                         ...
    +    START_TIME:                 2007-01-05T01:02:50.418
    +    STOP_TIME:                  2007-01-05T01:03:13.479
    +    TARGET_NAME:                MARS
    +    _FillValue:                 0
    +    scale_factor:               1.0
    +    add_offset:                 0.0
    +
    +
    +

    But one also get the image data simply as a numpy array:

    +
    +
    data.edr_da.values
    +
    +
    array([[ 9,  9, 10, ...,  8, 10,  8],
    +       [ 9,  8, 10, ...,  9, 10,  9],
    +       [ 9,  8, 10, ...,  8, 11, 10],
    +       ...,
    +       [11, 10, 11, ..., 10, 10, 10],
    +       [10,  9, 10, ...,  9, 10, 10],
    +       [11, 10, 10, ..., 11, 11, 10]], dtype=uint8)
    +
    +
    +

    Or plot the image using holoviews and datashader, so that even large images won’t bog down your browser:

    +
    +
    data.plot_edr()
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +

    Note, that the above data is the uncalibrated EDR, so the dynamics of the image seem a little rough. If you have configured the ISIS properly, so that the current Python environment is aware of it (using ISISROOT and ISISDATA env variables), you can calibrate this data yourself now:

    + + + +
    + +
    + + + + \ No newline at end of file
    + + +