From 35a1842abfac5b99938b765626de369ccc6fa21f Mon Sep 17 00:00:00 2001 From: jukent Date: Thu, 30 Nov 2023 16:41:48 +0000 Subject: [PATCH] Delete preview for pull request \#169 --- _preview/169/.buildinfo | 4 - .../169/_images/NCAR-contemp-logo-blue.svg | 1 - .../_images/UAlbany-A2-logo-purple-gold.svg | 1125 -- .../Unidata_logo_horizontal_1200x300.svg | 891 -- ...-main.c949a650a448cc0ae9fd3441c0e17fb0.css | 1 - ...ables.06eb56fa6e07937060861dad626602ad.css | 7 - .../_sources/cookbook_gallery_subtext.md.txt | 5 - _preview/169/_sources/index.md.txt | 434 - .../169/_sources/radar-cookbook/index.md.txt | 3 - _preview/169/_static/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 205 -> 0 bytes _preview/169/_static/basic.css | 906 -- _preview/169/_static/css/blank.css | 2 - ...index.ff1ffe594081f20da1ef19478df9384b.css | 6 - _preview/169/_static/css/theme.css | 120 - _preview/169/_static/custom.css | 129 - _preview/169/_static/custom.js | 184 - _preview/169/_static/doctools.js | 358 - _preview/169/_static/documentation_options.js | 14 - _preview/169/_static/favicon.ico | Bin 15086 -> 0 bytes _preview/169/_static/file.png | Bin 286 -> 0 bytes _preview/169/_static/images/icons/favicon.ico | Bin 15086 -> 0 bytes _preview/169/_static/images/logo_binder.svg | 19 - _preview/169/_static/images/logo_colab.png | Bin 7601 -> 0 bytes .../169/_static/images/logo_jupyterhub.svg | 1 - .../images/logos/NCAR-contemp-logo-blue.svg | 1 - .../logos/UAlbany-A2-logo-purple-gold.svg | 1125 -- .../Unidata_logo_horizontal_1200x300.svg | 891 -- .../_static/images/logos/footer-logo-nsf.png | Bin 10132 -> 0 bytes .../images/logos/pythia_logo-white-rtext.svg | 225 - .../_static/images/thumbnails/arm_logo.png | Bin 234379 -> 0 bytes _preview/169/_static/jquery-3.5.1.js | 10872 ---------------- _preview/169/_static/jquery.js | 2 - .../_static/js/index.be7d3bbb2ef33a8344ce.js | 32 - _preview/169/_static/language_data.js | 297 - _preview/169/_static/minus.png | Bin 90 -> 0 bytes ...69c37c29e427902b24a333a5f9fcb2f0b3ac41.css | 2342 ---- ...-main.c949a650a448cc0ae9fd3441c0e17fb0.css | 1 - ...ables.06eb56fa6e07937060861dad626602ad.css | 7 - _preview/169/_static/plus.png | Bin 90 -> 0 bytes _preview/169/_static/pygments.css | 75 - .../169/_static/pythia_logo-white-rtext.svg | 225 - _preview/169/_static/searchtools.js | 525 - _preview/169/_static/sphinx-book-theme.css | 5 - ...-theme.d59cb220de22ca1c485ebbdc042f0030.js | 22 - ...theme.e2363ea40746bee74734a24ffefccd78.css | 5 - .../169/_static/sphinx-pythia-theme.min.css | 1 - .../169/_static/sphinx-pythia-theme.min.js | 1 - _preview/169/_static/underscore-1.13.1.js | 2042 --- _preview/169/_static/underscore.js | 6 - .../vendor/fontawesome/5.13.0/LICENSE.txt | 34 - .../vendor/fontawesome/5.13.0/css/all.min.css | 5 - .../5.13.0/webfonts/fa-brands-400.eot | Bin 133034 -> 0 bytes .../5.13.0/webfonts/fa-brands-400.svg | 3570 ----- .../5.13.0/webfonts/fa-brands-400.ttf | Bin 132728 -> 0 bytes .../5.13.0/webfonts/fa-brands-400.woff | Bin 89824 -> 0 bytes .../5.13.0/webfonts/fa-brands-400.woff2 | Bin 76612 -> 0 bytes .../5.13.0/webfonts/fa-regular-400.eot | Bin 34390 -> 0 bytes .../5.13.0/webfonts/fa-regular-400.svg | 803 -- .../5.13.0/webfonts/fa-regular-400.ttf | Bin 34092 -> 0 bytes .../5.13.0/webfonts/fa-regular-400.woff | Bin 16800 -> 0 bytes .../5.13.0/webfonts/fa-regular-400.woff2 | Bin 13584 -> 0 bytes .../5.13.0/webfonts/fa-solid-900.eot | Bin 202902 -> 0 bytes .../5.13.0/webfonts/fa-solid-900.svg | 4938 ------- .../5.13.0/webfonts/fa-solid-900.ttf | Bin 202616 -> 0 bytes .../5.13.0/webfonts/fa-solid-900.woff | Bin 103300 -> 0 bytes .../5.13.0/webfonts/fa-solid-900.woff2 | Bin 79444 -> 0 bytes _preview/169/_static/webpack-macros.html | 25 - _preview/169/cookbook_gallery_subtext.html | 353 - _preview/169/genindex.html | 331 - _preview/169/index.html | 686 - _preview/169/objects.inv | 7 - _preview/169/radar-cookbook/index.html | 346 - _preview/169/search.html | 360 - _preview/169/searchindex.js | 1 - 75 files changed, 34371 deletions(-) delete mode 100644 _preview/169/.buildinfo delete mode 100644 _preview/169/_images/NCAR-contemp-logo-blue.svg delete mode 100644 _preview/169/_images/UAlbany-A2-logo-purple-gold.svg delete mode 100644 _preview/169/_images/Unidata_logo_horizontal_1200x300.svg delete mode 100644 _preview/169/_panels_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css delete mode 100644 _preview/169/_panels_static/panels-variables.06eb56fa6e07937060861dad626602ad.css delete mode 100644 _preview/169/_sources/cookbook_gallery_subtext.md.txt delete mode 100644 _preview/169/_sources/index.md.txt delete mode 100644 _preview/169/_sources/radar-cookbook/index.md.txt delete mode 100644 _preview/169/_static/__init__.py delete mode 100644 _preview/169/_static/__pycache__/__init__.cpython-310.pyc delete mode 100644 _preview/169/_static/basic.css delete mode 100644 _preview/169/_static/css/blank.css delete mode 100644 _preview/169/_static/css/index.ff1ffe594081f20da1ef19478df9384b.css delete mode 100644 _preview/169/_static/css/theme.css delete mode 100644 _preview/169/_static/custom.css delete mode 100644 _preview/169/_static/custom.js delete mode 100644 _preview/169/_static/doctools.js delete mode 100644 _preview/169/_static/documentation_options.js delete mode 100644 _preview/169/_static/favicon.ico delete mode 100644 _preview/169/_static/file.png delete mode 100644 _preview/169/_static/images/icons/favicon.ico delete mode 100644 _preview/169/_static/images/logo_binder.svg delete mode 100644 _preview/169/_static/images/logo_colab.png delete mode 100644 _preview/169/_static/images/logo_jupyterhub.svg delete mode 100644 _preview/169/_static/images/logos/NCAR-contemp-logo-blue.svg delete mode 100644 _preview/169/_static/images/logos/UAlbany-A2-logo-purple-gold.svg delete mode 100644 _preview/169/_static/images/logos/Unidata_logo_horizontal_1200x300.svg delete mode 100644 _preview/169/_static/images/logos/footer-logo-nsf.png delete mode 100644 _preview/169/_static/images/logos/pythia_logo-white-rtext.svg delete mode 100644 _preview/169/_static/images/thumbnails/arm_logo.png delete mode 100644 _preview/169/_static/jquery-3.5.1.js delete mode 100644 _preview/169/_static/jquery.js delete mode 100644 _preview/169/_static/js/index.be7d3bbb2ef33a8344ce.js delete mode 100644 _preview/169/_static/language_data.js delete mode 100644 _preview/169/_static/minus.png delete mode 100644 _preview/169/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css delete mode 100644 _preview/169/_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css delete mode 100644 _preview/169/_static/panels-variables.06eb56fa6e07937060861dad626602ad.css delete mode 100644 _preview/169/_static/plus.png delete mode 100644 _preview/169/_static/pygments.css delete mode 100644 _preview/169/_static/pythia_logo-white-rtext.svg delete mode 100644 _preview/169/_static/searchtools.js delete mode 100644 _preview/169/_static/sphinx-book-theme.css delete mode 100644 _preview/169/_static/sphinx-book-theme.d59cb220de22ca1c485ebbdc042f0030.js delete mode 100644 _preview/169/_static/sphinx-book-theme.e2363ea40746bee74734a24ffefccd78.css delete mode 100644 _preview/169/_static/sphinx-pythia-theme.min.css delete mode 100644 _preview/169/_static/sphinx-pythia-theme.min.js delete mode 100644 _preview/169/_static/underscore-1.13.1.js delete mode 100644 _preview/169/_static/underscore.js delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/LICENSE.txt delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/css/all.min.css delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.eot delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.svg delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.ttf delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2 delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.eot delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.svg delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.ttf delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-regular-400.woff2 delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.eot delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.svg delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.ttf delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff delete mode 100644 _preview/169/_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2 delete mode 100644 _preview/169/_static/webpack-macros.html delete mode 100644 _preview/169/cookbook_gallery_subtext.html delete mode 100644 _preview/169/genindex.html delete mode 100644 _preview/169/index.html delete mode 100644 _preview/169/objects.inv delete mode 100644 _preview/169/radar-cookbook/index.html delete mode 100644 _preview/169/search.html delete mode 100644 _preview/169/searchindex.js diff --git a/_preview/169/.buildinfo b/_preview/169/.buildinfo deleted file mode 100644 index c121f67..0000000 --- a/_preview/169/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 98433a9b6e25ff1fe2d731c2d88ad222 -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/_preview/169/_images/NCAR-contemp-logo-blue.svg b/_preview/169/_images/NCAR-contemp-logo-blue.svg deleted file mode 100644 index 3bcda63..0000000 --- a/_preview/169/_images/NCAR-contemp-logo-blue.svg +++ /dev/null @@ -1 +0,0 @@ -NCAR-contemp-logo-blue.a diff --git a/_preview/169/_images/UAlbany-A2-logo-purple-gold.svg b/_preview/169/_images/UAlbany-A2-logo-purple-gold.svg deleted file mode 100644 index 4fdfe3a..0000000 --- a/_preview/169/_images/UAlbany-A2-logo-purple-gold.svg +++ /dev/null @@ -1,1125 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/_preview/169/_images/Unidata_logo_horizontal_1200x300.svg b/_preview/169/_images/Unidata_logo_horizontal_1200x300.svg deleted file mode 100644 index 0d9fd70..0000000 --- a/_preview/169/_images/Unidata_logo_horizontal_1200x300.svg +++ /dev/null @@ -1,891 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/_preview/169/_panels_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css b/_preview/169/_panels_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css deleted file mode 100644 index fc14abc..0000000 --- a/_preview/169/_panels_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css +++ /dev/null @@ -1 +0,0 @@ -details.dropdown .summary-title{padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.dropdown:hover{cursor:pointer}details.dropdown .summary-content{cursor:default}details.dropdown summary{list-style:none;padding:1em}details.dropdown summary .octicon.no-title{vertical-align:middle}details.dropdown[open] summary .octicon.no-title{visibility:hidden}details.dropdown summary::-webkit-details-marker{display:none}details.dropdown summary:focus{outline:none}details.dropdown summary:hover .summary-up svg,details.dropdown summary:hover .summary-down svg{opacity:1}details.dropdown .summary-up svg,details.dropdown .summary-down svg{display:block;opacity:.6}details.dropdown .summary-up,details.dropdown .summary-down{pointer-events:none;position:absolute;right:1em;top:.75em}details.dropdown[open] .summary-down{visibility:hidden}details.dropdown:not([open]) .summary-up{visibility:hidden}details.dropdown.fade-in[open] summary~*{-moz-animation:panels-fade-in .5s ease-in-out;-webkit-animation:panels-fade-in .5s ease-in-out;animation:panels-fade-in .5s ease-in-out}details.dropdown.fade-in-slide-down[open] summary~*{-moz-animation:panels-fade-in .5s ease-in-out, panels-slide-down .5s ease-in-out;-webkit-animation:panels-fade-in .5s ease-in-out, panels-slide-down .5s ease-in-out;animation:panels-fade-in .5s ease-in-out, panels-slide-down .5s ease-in-out}@keyframes panels-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes panels-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.octicon{display:inline-block;fill:currentColor;vertical-align:text-top}.tabbed-content{box-shadow:0 -.0625rem var(--tabs-color-overline),0 .0625rem var(--tabs-color-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.tabbed-content>:first-child{margin-top:0 !important}.tabbed-content>:last-child{margin-bottom:0 !important}.tabbed-content>.tabbed-set{margin:0}.tabbed-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.tabbed-set>input{opacity:0;position:absolute}.tabbed-set>input:checked+label{border-color:var(--tabs-color-label-active);color:var(--tabs-color-label-active)}.tabbed-set>input:checked+label+.tabbed-content{display:block}.tabbed-set>input:focus+label{outline-style:auto}.tabbed-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.tabbed-set>label{border-bottom:.125rem solid transparent;color:var(--tabs-color-label-inactive);cursor:pointer;font-size:var(--tabs-size-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .tabbed-set>label:hover{color:var(--tabs-color-label-active)} diff --git a/_preview/169/_panels_static/panels-variables.06eb56fa6e07937060861dad626602ad.css b/_preview/169/_panels_static/panels-variables.06eb56fa6e07937060861dad626602ad.css deleted file mode 100644 index adc6166..0000000 --- a/_preview/169/_panels_static/panels-variables.06eb56fa6e07937060861dad626602ad.css +++ /dev/null @@ -1,7 +0,0 @@ -:root { ---tabs-color-label-active: hsla(231, 99%, 66%, 1); ---tabs-color-label-inactive: rgba(178, 206, 245, 0.62); ---tabs-color-overline: rgb(207, 236, 238); ---tabs-color-underline: rgb(207, 236, 238); ---tabs-size-label: 1rem; -} \ No newline at end of file diff --git a/_preview/169/_sources/cookbook_gallery_subtext.md.txt b/_preview/169/_sources/cookbook_gallery_subtext.md.txt deleted file mode 100644 index 4d62c7a..0000000 --- a/_preview/169/_sources/cookbook_gallery_subtext.md.txt +++ /dev/null @@ -1,5 +0,0 @@ -Pythia Cookbooks provide example workflows on more advanced and domain-specific problems developed by the Pythia community. Cookbooks build on top of skills you learn in [Pythia Foundations](https://foundations.projectpythia.org/landing-page.html). - -Cookbooks are created from Jupyter Notebooks that we strive to binderize so each Cookbook can be [executed in the cloud with a single click from your browser](https://foundations.projectpythia.org/preamble/how-to-use.html#interacting-with-jupyter-notebooks-in-the-cloud-via-binder), but in some instances executing a Cookbook will require [running the notebooks locally](https://foundations.projectpythia.org/preamble/how-to-use.html#interacting-with-jupyter-books-locally). - -Interested in contributing a new Cookbook or contributing to an existing Cookbook? Great! Please see the [Project Pythia Cookbook Contributor's Guide](https://github.com/ProjectPythia/.github/blob/main/.github/CONTRIBUTING.md), and consider opening a discussion under the [Project Pythia category of the Pangeo Discourse](https://discourse.pangeo.io/c/education/project-pythia/60). diff --git a/_preview/169/_sources/index.md.txt b/_preview/169/_sources/index.md.txt deleted file mode 100644 index 8b089c7..0000000 --- a/_preview/169/_sources/index.md.txt +++ /dev/null @@ -1,434 +0,0 @@ - -# Cookbooks Gallery - - -Pythia Cookbooks provide example workflows on more advanced and domain-specific problems developed by the Pythia community. Cookbooks build on top of skills you learn in [Pythia Foundations](https://foundations.projectpythia.org/landing-page.html). - -Cookbooks are created from Jupyter Notebooks that we strive to binderize so each Cookbook can be [executed in the cloud with a single click from your browser](https://foundations.projectpythia.org/preamble/how-to-use.html#interacting-with-jupyter-notebooks-in-the-cloud-via-binder), but in some instances executing a Cookbook will require [running the notebooks locally](https://foundations.projectpythia.org/preamble/how-to-use.html#interacting-with-jupyter-books-locally). - -Interested in contributing a new Cookbook or contributing to an existing Cookbook? Great! Please see the [Project Pythia Cookbook Contributor's Guide](https://github.com/ProjectPythia/.github/blob/main/.github/CONTRIBUTING.md), and consider opening a discussion under the [Project Pythia category of the Pangeo Discourse](https://discourse.pangeo.io/c/education/project-pythia/60). - - -
- -
-
- - - - - - -
-
- - - -````{panels} -:column: col-12 -:card: +mb-4 w-100 -:header: d-none -:body: p-3 m-0 -:footer: p-1 - ---- -:column: + tagged-card climate dask intake-esm xarray - - - - -+++ -
-climate -dask -intake-esm -xarray -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card climate intake-esm xesmf - - - - -+++ -
-climate -intake-esm -xesmf -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card AWS-cloud HRRR-model xarray zarr - - - - -+++ -
-AWS-cloud -HRRR-model -xarray -zarr -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card Py-Art radar - - - - -+++ -
-Py-Art -radar -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card Data-access intake intake-markdown intake-xarray - - - - -+++ -
-Data-access -intake -intake-markdown -intake-xarray -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card climate dask hvPlot intake ml satellite xarray - - - - -+++ -
-climate -dask -hvPlot -intake -ml -satellite -xarray -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card AWS-Cloud Data-Access HRRR-model intake kerchunk xarray zarr - - - - -+++ -
-AWS-Cloud -Data-Access -HRRR-model -intake -kerchunk -xarray -zarr -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card IPython data-science intake machine-learning matplotlib numpy oceanography scientific-software-engineering tensorflow xarray xbatcher zarr - - - - -+++ -
-IPython -data-science -intake -machine-learning -matplotlib -numpy -oceanography -scientific-software-engineering -tensorflow -xarray -xbatcher -zarr -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card dask xarray - - - - -+++ -
-dask -xarray -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card geoviews meteorology panel xarray zarr - - - - -+++ -
-geoviews -meteorology -panel -xarray -zarr -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card Basemaps GIS Geospatial-data NASA-EarthData-GIBS Satellite-imagery Spatial-analysis cartopy geoviews hvPlot owslib panel - - - - -+++ -
-Basemaps -GIS -Geospatial-data -NASA-EarthData-GIBS -Satellite-imagery -Spatial-analysis -cartopy -geoviews -hvPlot -owslib -panel -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card Pyresample verde xESMF xarray - - - - -+++ -
-Pyresample -verde -xESMF -xarray -
- nightly-build - Binder - DOI -
-
- - ---- -:column: + tagged-card sampledomain samplepackage - - - - -+++ -
-sampledomain -samplepackage -
- nightly-build - Binder - DOI -
-
- - -```` - - - diff --git a/_preview/169/_sources/radar-cookbook/index.md.txt b/_preview/169/_sources/radar-cookbook/index.md.txt deleted file mode 100644 index 89bd182..0000000 --- a/_preview/169/_sources/radar-cookbook/index.md.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Redirect notice - -The URL for the Radar Cookbook is now diff --git a/_preview/169/_static/__init__.py b/_preview/169/_static/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/_preview/169/_static/__pycache__/__init__.cpython-310.pyc b/_preview/169/_static/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 67791c7d6868c29a98408a134d4c5a2540cd494a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmYk0u?@m75Jer70wHA(isV3P5n=)w2C$si!d4R7@?9db2TRbi2rVsJP+`-+m;U?u zzc`&MiWQ5xUmr5%E8$;REQe^!BP2Vqb#}b5kmeuW9!3m+S_B1yv8HuaiW-!i5d2Kq zh>}Kf!HB+;YJ%Q0-`&}|+HL?1snUzK6K92hUK@MijdL9*tp){1f=mmX$J4}l<>%*e PH#j-=YM(yAMMTa%Ai_8E diff --git a/_preview/169/_static/basic.css b/_preview/169/_static/basic.css deleted file mode 100644 index d54be80..0000000 --- a/_preview/169/_static/basic.css +++ /dev/null @@ -1,906 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -div.section::after { - display: block; - content: ''; - clear: left; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 270px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li p.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 450px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -a.brackets:before, -span.brackets > a:before{ - content: "["; -} - -a.brackets:after, -span.brackets > a:after { - content: "]"; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, figure.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, figure.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, figure.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, figure.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar, -aside.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px; - background-color: #ffe; - width: 40%; - float: right; - clear: right; - overflow-x: auto; -} - -p.sidebar-title { - font-weight: bold; -} - -div.admonition, div.topic, blockquote { - clear: left; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- content of sidebars/topics/admonitions -------------------------------- */ - -div.sidebar > :last-child, -aside.sidebar > :last-child, -div.topic > :last-child, -div.admonition > :last-child { - margin-bottom: 0; -} - -div.sidebar::after, -aside.sidebar::after, -div.topic::after, -div.admonition::after, -blockquote::after { - display: block; - content: ''; - clear: both; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - margin-top: 10px; - margin-bottom: 10px; - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > :first-child, -td > :first-child { - margin-top: 0px; -} - -th > :last-child, -td > :last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure, figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption, figcaption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number, -figcaption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text, -figcaption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist { - margin: 1em 0; -} - -table.hlist td { - vertical-align: top; -} - -/* -- object description styles --------------------------------------------- */ - -.sig { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; -} - -.sig-name, code.descname { - background-color: transparent; - font-weight: bold; -} - -.sig-name { - font-size: 1.1em; -} - -code.descname { - font-size: 1.2em; -} - -.sig-prename, code.descclassname { - background-color: transparent; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.sig-param.n { - font-style: italic; -} - -/* C++ specific styling */ - -.sig-inline.c-texpr, -.sig-inline.cpp-texpr { - font-family: unset; -} - -.sig.c .k, .sig.c .kt, -.sig.cpp .k, .sig.cpp .kt { - color: #0033B3; -} - -.sig.c .m, -.sig.cpp .m { - color: #1750EB; -} - -.sig.c .s, .sig.c .sc, -.sig.cpp .s, .sig.cpp .sc { - color: #067D17; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -:not(li) > ol > li:first-child > :first-child, -:not(li) > ul > li:first-child > :first-child { - margin-top: 0px; -} - -:not(li) > ol > li:last-child > :last-child, -:not(li) > ul > li:last-child > :last-child { - margin-bottom: 0px; -} - -ol.simple ol p, -ol.simple ul p, -ul.simple ol p, -ul.simple ul p { - margin-top: 0; -} - -ol.simple > li:not(:first-child) > p, -ul.simple > li:not(:first-child) > p { - margin-top: 0; -} - -ol.simple p, -ul.simple p { - margin-bottom: 0; -} - -dl.footnote > dt, -dl.citation > dt { - float: left; - margin-right: 0.5em; -} - -dl.footnote > dd, -dl.citation > dd { - margin-bottom: 0em; -} - -dl.footnote > dd:after, -dl.citation > dd:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dt:after { - content: ":"; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > :first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dl > dd:last-child, -dl > dd:last-child > :last-child { - margin-bottom: 0; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0 0.5em; - content: ":"; - display: inline-block; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -pre, div[class*="highlight-"] { - clear: both; -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; - white-space: nowrap; -} - -div[class*="highlight-"] { - margin: 1em 0; -} - -td.linenos pre { - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - display: block; -} - -table.highlighttable tbody { - display: block; -} - -table.highlighttable tr { - display: flex; -} - -table.highlighttable td { - margin: 0; - padding: 0; -} - -table.highlighttable td.linenos { - padding-right: 0.5em; -} - -table.highlighttable td.code { - flex: 1; - overflow: hidden; -} - -.highlight .hll { - display: block; -} - -div.highlight pre, -table.highlighttable pre { - margin: 0; -} - -div.code-block-caption + div { - margin-top: 0; -} - -div.code-block-caption { - margin-top: 1em; - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -table.highlighttable td.linenos, -span.linenos, -div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; - -webkit-user-select: text; /* Safari fallback only */ - -webkit-user-select: none; /* Chrome/Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+ */ -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - margin: 1em 0; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: absolute; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/_preview/169/_static/css/blank.css b/_preview/169/_static/css/blank.css deleted file mode 100644 index 8a686ec..0000000 --- a/_preview/169/_static/css/blank.css +++ /dev/null @@ -1,2 +0,0 @@ -/* This file is intentionally left blank to override the stylesheet of the -parent theme via theme.conf. The parent style we import directly in theme.css */ \ No newline at end of file diff --git a/_preview/169/_static/css/index.ff1ffe594081f20da1ef19478df9384b.css b/_preview/169/_static/css/index.ff1ffe594081f20da1ef19478df9384b.css deleted file mode 100644 index 9b1c5d7..0000000 --- a/_preview/169/_static/css/index.ff1ffe594081f20da1ef19478df9384b.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v4.5.0 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors - * Copyright 2011-2020 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:540px;--breakpoint-md:720px;--breakpoint-lg:960px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;line-height:1.5;color:#212529;text-align:left}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;background-color:transparent}a:hover{color:#0056b3}a:not([href]),a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:540px){.container{max-width:540px}}@media (min-width:720px){.container{max-width:720px}}@media (min-width:960px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1400px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:540px){.container,.container-sm{max-width:540px}}@media (min-width:720px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:960px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1400px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:540px){.col-sm{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:720px){.col-md{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:960px){.col-lg{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:539.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:719.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:959.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' 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(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' 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") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%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='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%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='%23dc3545' stroke='none'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:540px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;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:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{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 transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:540px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:720px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:960px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{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 transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .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){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;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;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat 50%;background-size:100% 100%}@media (max-width:539.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:540px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{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>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:719.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:720px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{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>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:959.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:960px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{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>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{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>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{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>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;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);border-radius:.25rem}.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;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:540px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:540px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:540px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb,.breadcrumb-item{display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;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){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:540px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.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:#007bff;border-color:#007bff}.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}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.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:540px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.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:720px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.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:960px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.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}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.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}}.list-group-flush{border-radius:0}.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-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-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{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:540px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width:960px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;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:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;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;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;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:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{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;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.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:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.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}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!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}@media (min-width:540px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!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}}@media (min-width:720px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!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}}@media (min-width:960px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!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}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!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}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!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}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.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-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!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}.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}.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}@media (min-width:540px){.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-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!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}.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}.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}}@media (min-width:720px){.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-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!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}.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}.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}}@media (min-width:960px){.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-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!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}.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}.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}}@media (min-width:1200px){.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-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!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}.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}.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}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:540px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:720px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:960px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!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}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!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}.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}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:540px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:720px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:960px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:540px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:720px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:960px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:960px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}html{font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 12px)}body{padding-top:calc(var(--pst-header-height) + 20px);background-color:#fff;font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;color:rgba(var(--pst-color-text-base),1)}p{margin-bottom:1.15rem;font-size:1em;color:rgba(var(--pst-color-paragraph),1)}p.rubric{border-bottom:1px solid #c9c9c9}a{color:rgba(var(--pst-color-link),1);text-decoration:none}a:hover{color:rgba(var(--pst-color-link-hover),1);text-decoration:underline}a.headerlink{color:rgba(var(--pst-color-headerlink),1);font-size:.8em;padding:0 4px;text-decoration:none}a.headerlink:hover{background-color:rgba(var(--pst-color-headerlink),1);color:rgba(var(--pst-color-headerlink-hover),1)}.heading-style,h1,h2,h3,h4,h5,h6{margin:2.75rem 0 1.05rem;font-family:var(--pst-font-family-heading);font-weight:400;line-height:1.15}h1{margin-top:0;font-size:var(--pst-font-size-h1);color:rgba(var(--pst-color-h1),1)}h2{font-size:var(--pst-font-size-h2);color:rgba(var(--pst-color-h2),1)}h3{font-size:var(--pst-font-size-h3);color:rgba(var(--pst-color-h3),1)}h4{font-size:var(--pst-font-size-h4);color:rgba(var(--pst-color-h4),1)}h5{font-size:var(--pst-font-size-h5);color:rgba(var(--pst-color-h5),1)}h6{font-size:var(--pst-font-size-h6);color:rgba(var(--pst-color-h6),1)}.text_small,small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid #e5e5e5}code,kbd,pre,samp{font-family:var(--pst-font-family-monospace)}code{color:rgba(var(--pst-color-inline-code),1)}pre{margin:1.5em 0;padding:10px;background-color:rgba(var(--pst-color-preformatted-background),1);color:rgba(var(--pst-color-preformatted-text),1);line-height:1.2em;border:1px solid #c9c9c9;border-radius:.2rem;box-shadow:1px 1px 1px #d8d8d8}dd{margin-top:3px;margin-bottom:10px;margin-left:30px}.navbar{position:fixed;min-height:var(--pst-header-height);width:100%;padding:0}.navbar .container-xl{height:100%}@media (min-width:960px){.navbar #navbar-end>.navbar-end-item{display:inline-block}}.navbar-brand{position:relative;height:var(--pst-header-height);width:auto;padding:.5rem 0}.navbar-brand img{max-width:100%;height:100%;width:auto}.navbar-light{background:#fff!important;box-shadow:0 .125rem .25rem 0 rgba(0,0,0,.11)}.navbar-light .navbar-nav li a.nav-link{padding:0 .5rem;color:rgba(var(--pst-color-navbar-link),1)}.navbar-light .navbar-nav li a.nav-link:hover{color:rgba(var(--pst-color-navbar-link-hover),1)}.navbar-light .navbar-nav>.active>.nav-link{font-weight:600;color:rgba(var(--pst-color-navbar-link-active),1)}.navbar-header a{padding:0 15px}.admonition,div.admonition{margin:1.5625em auto;padding:0 .6rem .8rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-left-color:rgba(var(--pst-color-admonition-default),1);border-bottom-color:rgba(var(--pst-color-admonition-default),1);border-right-color:rgba(var(--pst-color-admonition-default),1);border-top-color:rgba(var(--pst-color-admonition-default),1);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);transition:color .25s,background-color .25s,border-color .25s}.admonition :last-child,div.admonition :last-child{margin-bottom:0}.admonition p.admonition-title~*,div.admonition p.admonition-title~*{padding:0 1.4rem}.admonition>ol,.admonition>ul,div.admonition>ol,div.admonition>ul{margin-left:1em}.admonition>.admonition-title,div.admonition>.admonition-title{position:relative;margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;font-weight:700;background-color:rgba(var(--pst-color-admonition-default),.1)}.admonition>.admonition-title:before,div.admonition>.admonition-title:before{position:absolute;left:.6rem;width:1rem;height:1rem;color:rgba(var(--pst-color-admonition-default),1);font-family:Font Awesome\ 5 Free;font-weight:900;content:var(--pst-icon-admonition-default)}.admonition>.admonition-title+*,div.admonition>.admonition-title+*{margin-top:.4em}.admonition.attention,div.admonition.attention{border-color:rgba(var(--pst-color-admonition-attention),1)}.admonition.attention>.admonition-title,div.admonition.attention>.admonition-title{background-color:rgba(var(--pst-color-admonition-attention),.1)}.admonition.attention>.admonition-title:before,div.admonition.attention>.admonition-title:before{color:rgba(var(--pst-color-admonition-attention),1);content:var(--pst-icon-admonition-attention)}.admonition.caution,div.admonition.caution{border-color:rgba(var(--pst-color-admonition-caution),1)}.admonition.caution>.admonition-title,div.admonition.caution>.admonition-title{background-color:rgba(var(--pst-color-admonition-caution),.1)}.admonition.caution>.admonition-title:before,div.admonition.caution>.admonition-title:before{color:rgba(var(--pst-color-admonition-caution),1);content:var(--pst-icon-admonition-caution)}.admonition.warning,div.admonition.warning{border-color:rgba(var(--pst-color-admonition-warning),1)}.admonition.warning>.admonition-title,div.admonition.warning>.admonition-title{background-color:rgba(var(--pst-color-admonition-warning),.1)}.admonition.warning>.admonition-title:before,div.admonition.warning>.admonition-title:before{color:rgba(var(--pst-color-admonition-warning),1);content:var(--pst-icon-admonition-warning)}.admonition.danger,div.admonition.danger{border-color:rgba(var(--pst-color-admonition-danger),1)}.admonition.danger>.admonition-title,div.admonition.danger>.admonition-title{background-color:rgba(var(--pst-color-admonition-danger),.1)}.admonition.danger>.admonition-title:before,div.admonition.danger>.admonition-title:before{color:rgba(var(--pst-color-admonition-danger),1);content:var(--pst-icon-admonition-danger)}.admonition.error,div.admonition.error{border-color:rgba(var(--pst-color-admonition-error),1)}.admonition.error>.admonition-title,div.admonition.error>.admonition-title{background-color:rgba(var(--pst-color-admonition-error),.1)}.admonition.error>.admonition-title:before,div.admonition.error>.admonition-title:before{color:rgba(var(--pst-color-admonition-error),1);content:var(--pst-icon-admonition-error)}.admonition.hint,div.admonition.hint{border-color:rgba(var(--pst-color-admonition-hint),1)}.admonition.hint>.admonition-title,div.admonition.hint>.admonition-title{background-color:rgba(var(--pst-color-admonition-hint),.1)}.admonition.hint>.admonition-title:before,div.admonition.hint>.admonition-title:before{color:rgba(var(--pst-color-admonition-hint),1);content:var(--pst-icon-admonition-hint)}.admonition.tip,div.admonition.tip{border-color:rgba(var(--pst-color-admonition-tip),1)}.admonition.tip>.admonition-title,div.admonition.tip>.admonition-title{background-color:rgba(var(--pst-color-admonition-tip),.1)}.admonition.tip>.admonition-title:before,div.admonition.tip>.admonition-title:before{color:rgba(var(--pst-color-admonition-tip),1);content:var(--pst-icon-admonition-tip)}.admonition.important,div.admonition.important{border-color:rgba(var(--pst-color-admonition-important),1)}.admonition.important>.admonition-title,div.admonition.important>.admonition-title{background-color:rgba(var(--pst-color-admonition-important),.1)}.admonition.important>.admonition-title:before,div.admonition.important>.admonition-title:before{color:rgba(var(--pst-color-admonition-important),1);content:var(--pst-icon-admonition-important)}.admonition.note,div.admonition.note{border-color:rgba(var(--pst-color-admonition-note),1)}.admonition.note>.admonition-title,div.admonition.note>.admonition-title{background-color:rgba(var(--pst-color-admonition-note),.1)}.admonition.note>.admonition-title:before,div.admonition.note>.admonition-title:before{color:rgba(var(--pst-color-admonition-note),1);content:var(--pst-icon-admonition-note)}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{padding:1px 8px 1px 5px;white-space:nowrap;background-color:#eee}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0 0 .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.c .m,.sig.c .s,.sig.c .sc,.sig.cpp .k,.sig.cpp .kt,.sig.cpp .m,.sig.cpp .s,.sig.cpp .sc{color:rgba(var(--pst-color-text-base),1)}.sig-name{color:rgba(var(--pst-color-inline-code),1)}blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}dt.label>span.brackets:not(:only-child):before{content:"["}dt.label>span.brackets:not(:only-child):after{content:"]"}a.footnote-reference{vertical-align:super;font-size:small}div.deprecated{margin-bottom:10px;margin-top:10px;padding:7px;background-color:#f3e5e5;border:1px solid #eed3d7;border-radius:.5rem}div.deprecated p{color:#b94a48;display:inline}.topic{background-color:#eee}.seealso dd{margin-top:0;margin-bottom:0}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{background-color:#f4debf;border-top:1px solid #ac9;border-bottom:1px solid #ac9}span.guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}footer{width:100%;border-top:1px solid #ccc;padding:10px}footer .footer-item p{margin-bottom:0}.bd-search{position:relative;padding:1rem 15px;margin-right:-15px;margin-left:-15px}.bd-search .icon{position:absolute;color:#a4a6a7;left:25px;top:25px}.bd-search input{border-radius:0;border:0;border-bottom:1px solid #e5e5e5;padding-left:35px}.bd-toc{-ms-flex-order:2;order:2;height:calc(100vh - 2rem);overflow-y:auto}@supports (position:-webkit-sticky) or (position:sticky){.bd-toc{position:-webkit-sticky;position:sticky;top:calc(var(--pst-header-height) + 20px);height:calc(100vh - 5rem);overflow-y:auto}}.bd-toc .onthispage{color:#a4a6a7}.section-nav{padding-left:0;border-left:1px solid #eee;border-bottom:none}.section-nav ul{padding-left:1rem}.toc-entry,.toc-entry a{display:block}.toc-entry a{padding:.125rem 1.5rem;color:rgba(var(--pst-color-toc-link),1)}@media (min-width:1200px){.toc-entry a{padding-right:0}}.toc-entry a:hover{color:rgba(var(--pst-color-toc-link-hover),1);text-decoration:none}.bd-sidebar{padding-top:1em}@media (min-width:720px){.bd-sidebar{border-right:1px solid rgba(0,0,0,.1)}@supports (position:-webkit-sticky) or (position:sticky){.bd-sidebar{position:-webkit-sticky;position:sticky;top:calc(var(--pst-header-height) + 20px);z-index:1000;height:calc(100vh - var(--pst-header-height) - 20px)}}}.bd-sidebar.no-sidebar{border-right:0}.bd-links{padding-top:1rem;padding-bottom:1rem;margin-right:-15px;margin-left:-15px}@media (min-width:720px){.bd-links{display:block}@supports (position:-webkit-sticky) or (position:sticky){.bd-links{max-height:calc(100vh - 11rem);overflow-y:auto}}}.bd-sidenav{display:none}.bd-content{padding-top:20px}.bd-content .section{max-width:100%}.bd-content .section table{display:block;overflow:auto}.bd-toc-link{display:block;padding:.25rem 1.5rem;font-weight:600;color:rgba(0,0,0,.65)}.bd-toc-link:hover{color:rgba(0,0,0,.85);text-decoration:none}.bd-toc-item.active{margin-bottom:1rem}.bd-toc-item.active:not(:first-child){margin-top:1rem}.bd-toc-item.active>.bd-toc-link{color:rgba(0,0,0,.85)}.bd-toc-item.active>.bd-toc-link:hover{background-color:transparent}.bd-toc-item.active>.bd-sidenav{display:block}nav.bd-links p.caption{font-size:var(--pst-sidebar-caption-font-size);text-transform:uppercase;font-weight:700;position:relative;margin-top:1.25em;margin-bottom:.5em;padding:0 1.5rem;color:rgba(var(--pst-color-sidebar-caption),1)}nav.bd-links p.caption:first-child{margin-top:0}.bd-sidebar .nav{font-size:var(--pst-sidebar-font-size)}.bd-sidebar .nav ul{list-style:none;padding:0 0 0 1.5rem}.bd-sidebar .nav li>a{display:block;padding:.25rem 1.5rem;color:rgba(var(--pst-color-sidebar-link),1)}.bd-sidebar .nav li>a:hover{color:rgba(var(--pst-color-sidebar-link-hover),1);text-decoration:none;background-color:transparent}.bd-sidebar .nav li>a.reference.external:after{font-family:Font Awesome\ 5 Free;font-weight:900;content:"\f35d";font-size:.75em;margin-left:.3em}.bd-sidebar .nav .active:hover>a,.bd-sidebar .nav .active>a{font-weight:600;color:rgba(var(--pst-color-sidebar-link-active),1)}.toc-h2{font-size:.85rem}.toc-h3{font-size:.75rem}.toc-h4{font-size:.65rem}.toc-entry>.nav-link.active{font-weight:600;color:#130654;color:rgba(var(--pst-color-toc-link-active),1);background-color:transparent;border-left:2px solid rgba(var(--pst-color-toc-link-active),1)}.nav-link:hover{border-style:none}#navbar-main-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.bd-toc .nav .nav{display:none}.bd-toc .nav .nav.visible,.bd-toc .nav>.active>ul{display:block}.prev-next-area{margin:20px 0}.prev-next-area p{margin:0 .3em;line-height:1.3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{display:flex;align-items:center;border:none;padding:10px;max-width:45%;overflow-x:hidden;color:rgba(0,0,0,.65);text-decoration:none}.prev-next-area a p.prev-next-title{color:rgba(var(--pst-color-link),1);font-weight:600;font-size:1.1em}.prev-next-area a:hover p.prev-next-title{text-decoration:underline}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.alert{padding-bottom:0}.alert-info a{color:#e83e8c}#navbar-icon-links i.fa,#navbar-icon-links i.fab,#navbar-icon-links i.far,#navbar-icon-links i.fas{vertical-align:middle;font-style:normal;font-size:1.5rem;line-height:1.25}#navbar-icon-links i.fa-github-square:before{color:#333}#navbar-icon-links i.fa-twitter-square:before{color:#55acee}#navbar-icon-links i.fa-gitlab:before{color:#548}#navbar-icon-links i.fa-bitbucket:before{color:#0052cc}.tocsection{border-left:1px solid #eee;padding:.3rem 1.5rem}.tocsection i{padding-right:.5rem}.editthispage{padding-top:2rem}.editthispage a{color:var(--pst-color-sidebar-link-active)}.xr-wrap[hidden]{display:block!important}.toctree-checkbox{position:absolute;display:none}.toctree-checkbox~ul{display:none}.toctree-checkbox~label i{transform:rotate(0deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label i{transform:rotate(180deg)}.bd-sidebar li{position:relative}.bd-sidebar label{position:absolute;top:0;right:0;height:30px;width:30px;cursor:pointer;display:flex;justify-content:center;align-items:center}.bd-sidebar label:hover{background:rgba(var(--pst-color-sidebar-expander-background-hover),1)}.bd-sidebar label i{display:inline-block;font-size:.75rem;text-align:center}.bd-sidebar label i:hover{color:rgba(var(--pst-color-sidebar-link-hover),1)}.bd-sidebar li.has-children>.reference{padding-right:30px}div.doctest>div.highlight span.gp,span.linenos,table.highlighttable td.linenos{user-select:none;-webkit-user-select:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.docutils.container{padding-left:unset;padding-right:unset} \ No newline at end of file diff --git a/_preview/169/_static/css/theme.css b/_preview/169/_static/css/theme.css deleted file mode 100644 index 2e03fe3..0000000 --- a/_preview/169/_static/css/theme.css +++ /dev/null @@ -1,120 +0,0 @@ -/* Provided by the Sphinx base theme template at build time */ -@import "../basic.css"; - -:root { - /***************************************************************************** - * Theme config - **/ - --pst-header-height: 60px; - - /***************************************************************************** - * Font size - **/ - --pst-font-size-base: 15px; /* base font size - applied at body / html level */ - - /* heading font sizes */ - --pst-font-size-h1: 36px; - --pst-font-size-h2: 32px; - --pst-font-size-h3: 26px; - --pst-font-size-h4: 21px; - --pst-font-size-h5: 18px; - --pst-font-size-h6: 16px; - - /* smaller then heading font sizes*/ - --pst-font-size-milli: 12px; - - --pst-sidebar-font-size: .9em; - --pst-sidebar-caption-font-size: .9em; - - /***************************************************************************** - * Font family - **/ - /* These are adapted from https://systemfontstack.com/ */ - --pst-font-family-base-system: -apple-system, BlinkMacSystemFont, Segoe UI, "Helvetica Neue", - Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol; - --pst-font-family-monospace-system: "SFMono-Regular", Menlo, Consolas, Monaco, - Liberation Mono, Lucida Console, monospace; - - --pst-font-family-base: var(--pst-font-family-base-system); - --pst-font-family-heading: var(--pst-font-family-base); - --pst-font-family-monospace: var(--pst-font-family-monospace-system); - - /***************************************************************************** - * Color - * - * Colors are defined in rgb string way, "red, green, blue" - **/ - --pst-color-primary: 19, 6, 84; - --pst-color-success: 40, 167, 69; - --pst-color-info: 0, 123, 255; /*23, 162, 184;*/ - --pst-color-warning: 255, 193, 7; - --pst-color-danger: 220, 53, 69; - --pst-color-text-base: 51, 51, 51; - - --pst-color-h1: var(--pst-color-primary); - --pst-color-h2: var(--pst-color-primary); - --pst-color-h3: var(--pst-color-text-base); - --pst-color-h4: var(--pst-color-text-base); - --pst-color-h5: var(--pst-color-text-base); - --pst-color-h6: var(--pst-color-text-base); - --pst-color-paragraph: var(--pst-color-text-base); - --pst-color-link: 0, 91, 129; - --pst-color-link-hover: 227, 46, 0; - --pst-color-headerlink: 198, 15, 15; - --pst-color-headerlink-hover: 255, 255, 255; - --pst-color-preformatted-text: 34, 34, 34; - --pst-color-preformatted-background: 250, 250, 250; - --pst-color-inline-code: 232, 62, 140; - - --pst-color-active-navigation: 19, 6, 84; - --pst-color-navbar-link: 77, 77, 77; - --pst-color-navbar-link-hover: var(--pst-color-active-navigation); - --pst-color-navbar-link-active: var(--pst-color-active-navigation); - --pst-color-sidebar-link: 77, 77, 77; - --pst-color-sidebar-link-hover: var(--pst-color-active-navigation); - --pst-color-sidebar-link-active: var(--pst-color-active-navigation); - --pst-color-sidebar-expander-background-hover: 244, 244, 244; - --pst-color-sidebar-caption: 77, 77, 77; - --pst-color-toc-link: 119, 117, 122; - --pst-color-toc-link-hover: var(--pst-color-active-navigation); - --pst-color-toc-link-active: var(--pst-color-active-navigation); - - /***************************************************************************** - * Icon - **/ - - /* font awesome icons*/ - --pst-icon-check-circle: '\f058'; - --pst-icon-info-circle: '\f05a'; - --pst-icon-exclamation-triangle: '\f071'; - --pst-icon-exclamation-circle: '\f06a'; - --pst-icon-times-circle: '\f057'; - --pst-icon-lightbulb: '\f0eb'; - - /***************************************************************************** - * Admonitions - **/ - - --pst-color-admonition-default: var(--pst-color-info); - --pst-color-admonition-note: var(--pst-color-info); - --pst-color-admonition-attention: var(--pst-color-warning); - --pst-color-admonition-caution: var(--pst-color-warning); - --pst-color-admonition-warning: var(--pst-color-warning); - --pst-color-admonition-danger: var(--pst-color-danger); - --pst-color-admonition-error: var(--pst-color-danger); - --pst-color-admonition-hint: var(--pst-color-success); - --pst-color-admonition-tip: var(--pst-color-success); - --pst-color-admonition-important: var(--pst-color-success); - - --pst-icon-admonition-default: var(--pst-icon-info-circle); - --pst-icon-admonition-note: var(--pst-icon-info-circle); - --pst-icon-admonition-attention: var(--pst-icon-exclamation-circle); - --pst-icon-admonition-caution: var(--pst-icon-exclamation-triangle); - --pst-icon-admonition-warning: var(--pst-icon-exclamation-triangle); - --pst-icon-admonition-danger: var(--pst-icon-exclamation-triangle); - --pst-icon-admonition-error: var(--pst-icon-times-circle); - --pst-icon-admonition-hint: var(--pst-icon-lightbulb); - --pst-icon-admonition-tip: var(--pst-icon-lightbulb); - --pst-icon-admonition-important: var(--pst-icon-exclamation-circle); - -} diff --git a/_preview/169/_static/custom.css b/_preview/169/_static/custom.css deleted file mode 100644 index 7804720..0000000 --- a/_preview/169/_static/custom.css +++ /dev/null @@ -1,129 +0,0 @@ -main.banner-main #project-pythia { - padding-top: 1rem; - padding-bottom: 1rem; - } - - main.banner-main #project-pythia p { - font-size: 1.4rem; /* default: 1.25rem */ - /* font-weight: 700; default: 300 */ - } - - main.banner-main #project-pythia a, - main.banner-main #project-pythia a:visited { - color: rgba(var(--spt-color-light), 1); - text-decoration: underline dotted rgba(var(--spt-color-gray-400), 1); - } - - main.banner-main #project-pythia a.headerlink:hover { - color: #DDD; - } - - main.banner-main #project-pythia a.btn-light { - color: rgba(var(--pst-color-primary), 1) - } - - .modal { - display: none; - position: fixed; - background: #f8f9fa; - border-radius: 5px; - padding: 3rem; - width: calc(100% - 8rem); - height: auto !important; - max-height: calc(100% - 8rem); - overflow: scroll; - top: 4rem; - left: 4rem; - z-index: 20001; - } - - .modal-backdrop { - display: none; - position: fixed; - background: rgba(0, 0, 0, 0.5); - top: 0; - left: 0; - height: 100vh; - width: 100vw; - z-index: 20000; - } - - .modal-btn { - color: #1a658f; - text-decoration: none; - } - - .modal-img { - float: right; - margin: 0 0 2rem 2rem; - max-width: 260px; - max-height: 260px; - } - - .gallery-menu { - margin-bottom: 1rem; - } - - .gallery-card div.container { - padding: 0 0 0 1rem; - } - - .gallery-thumbnail { - display: block; - float: left; - margin: auto 0; - padding: 0; - max-width: 160px; - } - - .card-subtitle { - font-size: 0.8rem; - } - - @media (max-width: 576px) { - .modal { - padding: 2rem; - width: calc(100% - 4rem); - max-height: calc(100% - 4rem); - top: 2rem; - left: 2rem; - } - - .modal-img { - display: none; - } - - .gallery-card { - flex-direction: column; - } - - .gallery-thumbnail { - float: none; - margin: 0 0 1rem 0; - max-width: 100%; - } - - .gallery-card div.container { - padding: 0; - } - - .gallery-return-btn { - padding-bottom: 1rem; - } - } - - div.horizontalgap { - float: left; - overflow: hidden; - height: 1px; - width: 0px; - } - -.badge.mybadges { - margin-bottom: 0; - font-weight: 0; -} - -.tagsandbadges { - padding: 0 0; -} diff --git a/_preview/169/_static/custom.js b/_preview/169/_static/custom.js deleted file mode 100644 index f0f3d57..0000000 --- a/_preview/169/_static/custom.js +++ /dev/null @@ -1,184 +0,0 @@ -var buttons = document.querySelectorAll('.modal-btn') -var backdrop = document.querySelector('.modal-backdrop') -var modals = document.querySelectorAll('.modal') - -function openModal(i) { - backdrop.style.display = 'block' - modals[i].style.display = 'block' -} - -function closeModal(i) { - backdrop.style.display = 'none' - modals[i].style.display = 'none' -} - -for (i = 0; i < buttons.length; i++) { - buttons[i].addEventListener( - 'click', - (function (j) { - return function () { - openModal(j) - } - })(i) - ) - backdrop.addEventListener( - 'click', - (function (j) { - return function () { - closeModal(j) - } - })(i) - ) -} - - -function change() { - var affiliationCbs = document.querySelectorAll(".affiliation input[type='checkbox']"); - var domainsCbs = document.querySelectorAll(".domains input[type='checkbox']"); - var formatsCbs = document.querySelectorAll(".formats input[type='checkbox']"); - var packagesCbs = document.querySelectorAll(".packages input[type='checkbox']"); - - var filters = { - affiliation: getClassOfCheckedCheckboxes(affiliationCbs), - domains: getClassOfCheckedCheckboxes(domainsCbs), - formats: getClassOfCheckedCheckboxes(formatsCbs), - packages: getClassOfCheckedCheckboxes(packagesCbs) - }; - - filterResults(filters); -} - -function getClassOfCheckedCheckboxes(checkboxes) { - var classes = []; - - if (checkboxes && checkboxes.length > 0) { - for (var i = 0; i < checkboxes.length; i++) { - var cb = checkboxes[i]; - - if (cb.checked) { - classes.push(cb.getAttribute("rel")); - } - } - } - - return classes; -} - -function filterResults(filters) { - var rElems = document.querySelectorAll(".tagged-card"); - var hiddenElems = []; - - if (!rElems || rElems.length <= 0) { - return; - } - - for (var i = 0; i < rElems.length; i++) { - var el = rElems[i]; - - if (filters.affiliation.length > 0) { - var isHidden = true; - - for (var j = 0; j < filters.affiliation.length; j++) { - var filter = filters.affiliation[j]; - - if (el.classList.contains(filter)) { - isHidden = false; - break; - } - } - - if (isHidden) { - hiddenElems.push(el); - } - } - - if (filters.domains.length > 0) { - var isHidden = true; - - for (var j = 0; j < filters.domains.length; j++) { - var filter = filters.domains[j]; - - if (el.classList.contains(filter)) { - isHidden = false; - break; - } - } - - if (isHidden) { - hiddenElems.push(el); - } - } - - if (filters.formats.length > 0) { - var isHidden = true; - - for (var j = 0; j < filters.formats.length; j++) { - var filter = filters.formats[j]; - - if (el.classList.contains(filter)) { - isHidden = false; - break; - } - } - - if (isHidden) { - hiddenElems.push(el); - } - } - - if (filters.packages.length > 0) { - var isHidden = true; - - for (var j = 0; j < filters.packages.length; j++) { - var filter = filters.packages[j]; - - if (el.classList.contains(filter)) { - isHidden = false; - break; - } - } - - if (isHidden) { - hiddenElems.push(el); - } - } - } - - for (var i = 0; i < rElems.length; i++) { - rElems[i].classList.replace("d-none", "d-flex"); - } - - if (hiddenElems.length <= 0) { - return; - } - - for (var i = 0; i < hiddenElems.length; i++) { - hiddenElems[i].classList.replace("d-flex", "d-none"); - } -} - - -function clearCbs() { - var affiliationCbs = document.querySelectorAll(".affiliation input[type='checkbox']"); - var domainsCbs = document.querySelectorAll(".domains input[type='checkbox']"); - var formatsCbs = document.querySelectorAll(".formats input[type='checkbox']"); - var packagesCbs = document.querySelectorAll(".packages input[type='checkbox']"); - - for (var i = 0; i < affiliationCbs.length; i++) { - affiliationCbs[i].checked=false; - } - - for (var i = 0; i < domainsCbs.length; i++) { - domainsCbs[i].checked=false; - } - - for (var i = 0; i < formatsCbs.length; i++) { - formatsCbs[i].checked=false; - } - - for (var i = 0; i < packagesCbs.length; i++) { - packagesCbs[i].checked=false; - } - - change(); -} diff --git a/_preview/169/_static/doctools.js b/_preview/169/_static/doctools.js deleted file mode 100644 index e1bfd70..0000000 --- a/_preview/169/_static/doctools.js +++ /dev/null @@ -1,358 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL - */ -jQuery.urldecode = function(x) { - if (!x) { - return x - } - return decodeURIComponent(x.replace(/\+/g, ' ')); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - this.initOnKeyListeners(); - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - var url = new URL(window.location); - url.searchParams.delete('highlight'); - window.history.replaceState({}, '', url); - }, - - /** - * helper function to focus on search bar - */ - focusSearchBar : function() { - $('input[name=q]').first().focus(); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - // only install a listener if it is really needed - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && - !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) - return; - - $(document).keydown(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box, textarea, dropdown or button - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && activeElementType !== 'BUTTON') { - if (event.altKey || event.ctrlKey || event.metaKey) - return; - - if (!event.shiftKey) { - switch (event.key) { - case 'ArrowLeft': - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) - break; - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - break; - case 'ArrowRight': - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) - break; - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - break; - case 'Escape': - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) - break; - Documentation.hideSearchWords(); - return false; - } - } - - // some keyboard layouts may need Shift to get / - switch (event.key) { - case '/': - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) - break; - Documentation.focusSearchBar(); - return false; - } - } - }); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/_preview/169/_static/documentation_options.js b/_preview/169/_static/documentation_options.js deleted file mode 100644 index 7e7102c..0000000 --- a/_preview/169/_static/documentation_options.js +++ /dev/null @@ -1,14 +0,0 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '', - LANGUAGE: 'None', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - LINK_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: true, - SHOW_SEARCH_SUMMARY: true, - ENABLE_SEARCH_SHORTCUTS: true, -}; \ No newline at end of file diff --git a/_preview/169/_static/favicon.ico b/_preview/169/_static/favicon.ico deleted file mode 100644 index da6ac735a43fa7aa7844553824262ea48aeeb4c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 diff --git a/_preview/169/_static/images/icons/favicon.ico b/_preview/169/_static/images/icons/favicon.ico deleted file mode 100644 index da6ac735a43fa7aa7844553824262ea48aeeb4c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 - - - -logo - - - - - - - - diff --git a/_preview/169/_static/images/logo_colab.png b/_preview/169/_static/images/logo_colab.png deleted file mode 100644 index b7560ec216b2d1b6f77855525fe966c741833428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7601 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 diff --git a/_preview/169/_static/images/logos/NCAR-contemp-logo-blue.svg b/_preview/169/_static/images/logos/NCAR-contemp-logo-blue.svg deleted file mode 100644 index 3bcda63..0000000 --- a/_preview/169/_static/images/logos/NCAR-contemp-logo-blue.svg +++ /dev/null @@ -1 +0,0 @@ -NCAR-contemp-logo-blue.a diff --git a/_preview/169/_static/images/logos/UAlbany-A2-logo-purple-gold.svg b/_preview/169/_static/images/logos/UAlbany-A2-logo-purple-gold.svg deleted file mode 100644 index 4fdfe3a..0000000 --- a/_preview/169/_static/images/logos/UAlbany-A2-logo-purple-gold.svg +++ /dev/null @@ -1,1125 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/_preview/169/_static/images/logos/Unidata_logo_horizontal_1200x300.svg b/_preview/169/_static/images/logos/Unidata_logo_horizontal_1200x300.svg deleted file mode 100644 index 0d9fd70..0000000 --- a/_preview/169/_static/images/logos/Unidata_logo_horizontal_1200x300.svg +++ /dev/null @@ -1,891 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/_preview/169/_static/images/logos/footer-logo-nsf.png b/_preview/169/_static/images/logos/footer-logo-nsf.png deleted file mode 100644 index 11c788f2a007d0ced73516804cd7c3a257d39476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10132 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 OoT99nOqG;b(EkDohWdE` diff --git a/_preview/169/_static/images/logos/pythia_logo-white-rtext.svg b/_preview/169/_static/images/logos/pythia_logo-white-rtext.svg deleted file mode 100644 index fa2a5c6..0000000 --- a/_preview/169/_static/images/logos/pythia_logo-white-rtext.svg +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/_preview/169/_static/images/thumbnails/arm_logo.png b/_preview/169/_static/images/thumbnails/arm_logo.png deleted file mode 100644 index 8b95ec19d764da2236e2ec1eb5a43e5b1a0b4039..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234379 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

44U7TJTLn<9iJs z%&U1mDUPiu*Xl5iE4eaSCQl9>QA(4AkPI&0kwY?aF}n+ z3r8f#!%dUg(-@s=95n2s_R5-gIds1xr4Za1+H$tbgJZ>J)jn5X`7mf;&x>r(!f`;4 zrOFmdNA@}zPHUFE?5>C-iVPmG=%eM3tqaS!9d8jpgP1ui8E`3LPE1tb?olXjh=Y#KK8DV&`asUCLzx)_X`_Pi{YBP=YhfvD8;8=q^?-u^AX<%g zPwL0BHL(j5*7?e?>#cb6vS?qRg?4x*w{(qdbs14g`C zOgvbQJ-Fq6rQH7vZ}4&zk)1_58AD0MpKN4|~IVf5i65gxc%}|qwyLX*|PUdBh>3vXH1 zoc7pII&sdm;Mrx@yc>ymnj#slINqq!EqCn5eq*dX~WZlA=)DzD<#B(^q~dNc0*CW}_iQNy? z+l>cbeJn4fC#kXXTyVX;RiOCQvIh>HCA?D&IG$vueJCpTRJ{{I$ z5Z_G?7KWCy93FL$rHRzmY^>{UFC!(F&?U@hRf<=AW+j_zs$i6$o9NW#D#UzS*0Ve{ z%Vq4@9q*5|VEwyY2{x_5DE=TeM8Z2MZ4+@-sgGDRz2+TAqMYd8N1t}9)>w!&T_3$pDg%)ZyR!}XW46p2z?6L?7)l|bFeG?rWsgpX#TrDb?mh;*fLYFJz2Lj~uY>y~Vap&!( zW)^-fQFai;AVHs5$r?6TNNtJOb8%Mc9#@{K3eVK)G(MsLQ2f{pd00tm1g3b@m? zC-0n8v*)U{P=nkjHkYtj&>bTY7rr~dz>uHeakJslC+f`B*dU9<4=`n;+dEUwziYlrVV zXkmtPDF6snSG@oX!YMtN$t&JWG0x#0T9lyK17RHRv|-5ps}M(UH>Zx6qkY@mhK z7FJC%oKA9g4BM|3&ZR}pK1y6y-m{~myF!{Cly{B&(f0FCh8X3_qNWLQ&s;+8F?_9X zAW^GF6F)Uf5_&m~iX+#JaVTs_moGbS`MPHPO?H#gfD@NKYU*?a@cPpRWz<}%es_rY zh0o6Uiaa17KtY*ID_ns2nw6vRq8$*GlQ2-f#@gO7uQX_%Y2M3;T z`N=C5+fvV}s_ybr!EKAsEaPk=f6^rXgkU8>OB-VO$sk=%nNpDy7+)JpSck)bsC8?& zYa@S=u&dN^Rpp3O^m57!aXz!3^zEI?35T-H2^}HC%N}KW4do7m1yU_bKO)FFo6=!1 z8P-<*bRe01cE^Loo>o*6A|xmKevZ--nB0rBOo2SYSV%X;5Yn%mapO%XzSaG5o1sgy z-M8{86l63_5}Tmz#~+p6Ge!D+Xw5oj|Agrd%BsRbxRF(FY=%;ayP*5p?L+YL#=h14 zjou~z*q-CPguIKvHBxSE`c`oVAielwJ2H{{*bL51I$9IY2b&p44r9AUfbW}vpyOS^hvOx-n+d$7V>-ibClWxG!i^a8QhHGP!`|Khde zQSbgQQBGq{SAw^oZ;RC|ot9jFzOcV>i3#(?d}%lG+?nUY?W)gn`VZ7mURpwE%65rf zDTrF-ww_aHd3A^QeMJF)i$iz%XD_^{wSal;&MK9EtmJ5KG;gGKvpqB(kM*2AB6P3m ztVV-mq|AkOwYUVZZu#C5yjI=q9d#NTP$IF)`xk{a3{vbW`J-(IzM zV%wg?K0HrhJLlo8ALa9r8MJx;B$Nx-!>52f+=prg1v5%d6v$uJW-M1AQdb|id`#Gq z3x|O$sP=A$H_cQ*n<35qCUS&u$g$}g5=O=E`mPV8*SYCloY1HuTPKP+Q2)c)0^G}PfJ2bbE zO7F55^J7r2%3B^?)JCsb{HSm?3}Tp2zqI8Ox15H)bFJjP`-q+o@TZGKk}(x4o8CV) zTmCXXSEj6&f?InKg6efEJLKGyR%Ka#x%leG75&}wD3uO(zw2|}1oRIi&vH`pb$hW} z>7HWSy^7?OrO^t2=eXZE&`%*CSQ#?K?d)oy#*x>KDVV zmNO5q#kDsjJ?ogSCuLR6mE0CBaGc!Y(XxjA_80o+x)iMPlULuFcoY|{oI|B(71Ezb zDdRg#r70ptFaJ>WHAS7pQQbzFOcfF*irknih=w&-f+8m|LWs3MKktEQ3wN!MUo@#t zll{C-EUOJ&FDg$EF)NOnjp{8|7!E){BhNeKJ>9N!Jp%kDn(!g`QKohnRYl9t;t7AU z_|@S03TTqBVQo0#NjlehR`r|Zb8rqE&P~vNWgK@fX?G^%{Ec#5rH?!%(5czJ(IiUF z)_jq}iOx|U8gCUwhDc|O&um?FqtV-Y|r=G-Y|ixCAIgdZgc0=OHPa2@zH9wu>EYQpp}4RW^J#vk^b%% zdq4}R04fItfKYebe^=f6(1w=Qv|`@vs`S^6r8Df^udgjD65X2BSPVOYyPvB@(SnIj zqw30~r(;x=dRDjNYUK%mhr91+9;3N;$5i9cuDspC(59Zc zLIu>5luW$rx+1pXWFi_-n=DhsbEEDjc*WKB{oAOy+PXo#yt7cAm zF;M9FlSngb&P{0VBNetL(lgEK*RU#h{Vqtmu4!_=R#SYPxpebsV@Pz`Wqyw6ZSBQX zW!fCvIvTi#>l;dN1NWG7_kv!iaq{6#3!y>!*u=wqc||CfOdLgdNSMvq*s3)@F5_+t z{pBVcy4^eT_6*4f8mn9@Hdcyyy0qtz+#vr-*=wqWHlyB@4{Tn2ilYeVaWz2A=>TTg zc+>4e_D|~YWp3_STnr+;8Ob2FP;iuUA-tTXzUOu;Kh$QFLOzrPISEQNm7Se&lg=uKOvzN)Ps^wbe}r<%ZXxMe#qkC~4CUmCkc8W;mWUW|i|+4i@tiHcXl< zHky;Q-zcM54`Kc>l&?TJFYs>dBImhlrB@|rx8mQ+@4DVoUpcO@ZQ)Eqaa)J&uDQfLH%dE&JIZCpxaNxQ zTo!rvQkPXC_;CT8@ZoXkFfK_b-+)wals{bJqCA8WCyV0RczvXyVE&B^ZxmfQrAhXU zK%yn%D}_*_Wv`1@7(Wu{(Yl;!Xj_nHeUYhM%rSa9%R9mFGI1mim8Es)DaO<1!RF(I zPqN6VszZAV)g^38fg^QbN#Mc7>>*5hH;(6(((8Rcfmxcj5-o1D`gJ$0~% zT}7^Ds_H_UC6n}?*}Va#7e=Oq-*!TKc1^DI0|`6l8rtm?;73-eaj)(<#0Wt}4Y(r&J3VV=|=V7Tai#L=Kxfx_@~~7$Sl34_;?pknhmd+VoL?df z+lvC*XkADv?5RJ+0(uRJ<+0gi^K>ODqE%*_ZxsCgkzO{{&K+ZXnoLCI?{}r2(XOK) zx4ehoxCo=tQ@cCkvzdMdY<;)@6Oe5W4m#j|{p5!bn* z!(GAYoNHP#MGN5&BH5!2=LxG{48ly+`+SS~)wo&eC@PdkWM0zcAoWbaj!Pj!Qk{6* zFH~Nvm^kH0g7Rai`ah;<8s)u^l56UN3)n=fTXv}iOk9|?W#E4#08Z~qt)r$8mK{|~ zI(L!iZa$TDBn9`;*EV_KtR0r`s%F5c@egyUQtd{>CZY{>0=YAHkC71QTw{!TbtOfr zhN>(%>cR2=-ZTRc1Rl^$6n;~bk$LD~wn>dTUtRwqduilkI^!9O9-RU6^oon;5k-u6 ztseu9P0zi%5jv4-a{G`1f6AlnCiR4U-SU&!c;jqnS@sKdd=OLc>zWtmI@IQ4-bmFh zYsYSu)>>Pbf@c!1(HnqwY|to!_P|(hHDMy9rCWWNVX4lM>4jqT53MGc2_M~;D~+`k z6!+%NNR*GWNh+}lK5g5s_L2cBazkWn$!Z4K_-Jb|ZW$fpG-yUOH^Q4F3{ zaLapQp7j!SX3FRJG~UDz&+0ZjG-wfNdwH%KdeojG;n{7wWpo6H@P##lFJ&%`a^})b zCA%jz?WSG!u#NCkrIv0S{VXQU+%oyOc!eD)%aewiMw01*+tDP~6+u!2OPKCh&%i2QBTv@tg;8K;a5+UNA`G9mY@g zmI)0cQcZfX%_L}2sz!FACE|Pq4R_5{Cy3N6CW~GiTmpD9*Zz=r?wNm`Jol^aKv1i&GkfbI9;!yyD3$ z(2d{OseP}Ju+gHVmTk!ImXS2=IyS#Ih|Qr_KT$#PZ3b$lg0V|V)U>D=Q-YNQsP zzw~A?*B;-OYJqbebc!UO;vvl?%FK5Zd=i&(y6=VHdDFZYxGq1>xdc-Zs1K1o#CRxG zPv?miDbKXs1$5h2^td&?a-!g*KdK ztve6|%j+Y2M>b&1*sL>taQ~EA-opgzRsQD8^UqyEI_83iq$SE}5+=-}m!AMahZ^I zW74<9X&C7n6WN@cdBFsD?!;S<28*i`o1Ht_JLK66>KsnJ=pM27v}@#Ur)eZ*&jRK1 z(QcL+Kj_p|JVKq$g(N42c6R*6nCtl}aV6lw)Xtae+Bd^y;q4DboY!{8ZScNqG9UO8o>Dl}zdO&P7z?wOX4> z-pvf6{xnU#6sv(-?DHgh+Y)XeuFUp{T!U5GuJ!WM^lCIF>V^i8}@M$ta z^_`%}Gq(m4Cl$K@zF27YpjT%VK3Ppw0jZ%}mzI>KjI(xjUiS%TmSvo{8oLUQLWgE8 z%l>G7u zQtp4GS##6>*hQ~nZc}z7_w9%irXLKe?V2%D1@b?dJthOshU~lmZ7(OU)Ns1@v}9jp zj`A+KiATfxcRe~`WwkHJOH?5^b+Dbl$yvu`o44vKEmF%)ZP-!b;;7VT3s2Gl_j?3+ zLBm{Scxm5OFX1J)8b~oY*;eEg=*Z>`KOwwyKZcuGLo)sTv`4q>A*+_O_rY3c zxYDc4RoG4)>ZQ$_%+4F3xA0HnF~+lcmHMe20FC=>d4Qi(F=Nn4TPkgfy;9?+j&%uI zonYdsSp=KpQeJKw7RxD?8F7Fa6s<+@U6n>??VtOY7yi2B^BI1GwOTT0g z?5Y%FHpkt*uq$|kBoL%qihZ`;*m#?B>O0ce7&Zrzw)WofJloYu6OXxU0q`J)R+dhJ zPQzhIo&GkrcW$5h`CEO9$e(YRzP4hDyA~lQ@W#NN&yDRm? z+fWC5gkIRsG^R%!_NZE=nRqL|S`!vNztmp;peHhZHj^SSca>N0HUU@@F4D1AK zlXQI4x=5>%Fl(H1``0(eaKB*I?%d0RAThgGOQDaG(WfMQdU=WB)Xggb+B~{xI;>7q zJKZ84l4`~;fvQhA_JTx@-iml%pX2Bq)Sfu4b?Pd#cuaZ@GUgqI7^of_Dw!Y83!S*J zZ??QPH229!QixL02jih0&DGZIBtdDTlr)pjRzJp;%WP=}I>QsJW!p!#6vA?I<+X8^wC15dxp6*S)KITl|z6_9r&~mCS+(Z z-W;i#266o4k=bA^kTHDH{pgwQS&QIMF>}S|l*NXSRKrY1?xaR4(u3C+dwJTp8Db9z zaoZOo7=1~U1cpoZS9X}M6lP5)-%~Di9N{$uzuK!Nd}=tHOo`AWzS*iw9>EE3m_?s^vkENWj)+S)QxfY0yC)ZY$>OS?x$I$jD~+2&J0_F*Ry=&f zF2#EZHVS&j2((+IUY*rdHa4Qu>iVQQBCXGKFb}*hk}jhq(TRpHq$&0zEYozb^sKp6 z_&cMWQ3Tqwl^+-LGU00n%nFZv*{I-sFdk=jL-6Ir{0m}d#oFFne^SgF?J4A`M<(gS z5wCT(%Cx6XyMu>j&@UR4`Upaz6*X_1r*5eXHdwLokjHK8PnKUGQG8Tm4BMHdZAn!W zd9f`lT}}hymwLzc$lJl$05Lqtqe_D(E*d>A>rlFH;UUE;)gv)0^6|0i=%ZJ0o{5uk zI{jv$kDsL(Yj=SI=Eo*QGli5HAZaqGPVcJdqi1)v*GC_@qov_dD;DaRpn*Gg3Xmj| zU>z>!d}P}AJwxtdk6EWi^_x#F@LXx5>6^!~*Hco@OpV31BD zl);^Ip{VgZ&d!r77Hxd+y{b-WY;~+ohv3Q)XESjPgA26rL1RM_d)EPLbX|NsWUU&+ zn|Hy{Y`vYESJe>OjYpqIL2)JVrNYF>Q~Lce6h?Dl&zFxtDBt7j^qHj(?c+>o$k@jl zVw|(^u>>$n@2xyuoQ7ukO`o0dj_^KebUj?`>X<+%9@}t^8sVbU=)FZJ5BgevQk2wW#tlC7f?7tK0pf;UjNfD@! zUi_GX)fb1hgY>D7*36as9MtK#1GHm{SFdzh$rH2>pEXIhdfrJ4kvaC!*RV;CkkmL` z|CQrija{&w*VO_CkI3&hqj$w@iSa1M+>JLg_m-Zxlm_*ry`nWlrwF z$+BRs1ZghdFEV~+ekN9GBnX~M8e>J9F+1Lc$WG&pJicQXZhvoY_8>!Ou=KK4J(5v` z%D{3A!dm7N!E7WsyymP(vIM?FR!2L5?NoZ-?CZCs8MkTNCdy^YoV$GAP17}jG7+$_!k+xlBnXMxTra4xt z>ifZUj=j1fGK4#Kr?nG37`20`=gp0)ceV0ctS^>bdA#cs;p2?7u8Oz0&(!m1-k7)+ z>65&wqc{U?%|F#vip*hbXT0{bFQ9Tq*(^$(iA5TZl4fcPPD<$vP2~|= z7%rC#G)ndwdxjwfai_+X1zHoCsszfOzvos^(v+y?JtZsL-lJS^r+AYnXF2 z>q=(pj9!1WOw%qyf?g?sXUQk23YRoM3*3MOIC&@=N0ZQLd@!Zsog1qb0dChJOL9JP zKU}3KT9uqTLqu0~RVK@{6*VlMnFNHnd1t2eymqlXyUkzBSKLQ-q??Jk?-`?g=Jc#> zsquXplx2A*ETbL@O}@+9xoDoD+T_+ZG4a3T>~}V@KWr^5s)0W7Oj(9mE31j@U^cF*mA_o;&{cKQ zZhqO-v$P{NuVSe&NSW-V_cJ#_yXWHvLXIb~JW%OriSEv}7W5tiJRXbFLxS$EnU)M8 zB`)Nfb1D_Gvu;n@1cRApp47)u)}Jg>{UE4EmQ;5+Gsm(+`&xgSo!Y799Y^Wv1D3rs zt`M8#?RlKp?iV0N(LS|T{8R{hX)pt2lYG=Z;<`bMSpu}(lFvOy*yP>KR5s}WJQ*4b z4w>Psm5Pj!Pa&X{TlLNhWD%|E(8q608HjQoI19e#RiRg;EP2x*t_aqsEdoa{_Plnd z5A1Xze{^y}@7f{WR3{wy1>VEPq3sv(U#y4&DH$rBFx`EH0~Qef9D6I~i_PYOugHgT zZ{BOhi5eU|ZK~IL$Ij+1S7{ky0j!d=SO}iba*el{|OeWi(JpXx_=I4csjOC#=KBYT1N$H}KnxkvBYNLxv?zP>8` zN(Miy=8D7XPb>T{9_^d(idgg!Od&~LX`6hGU*go@H=iN4qL0cqU2Ukh+_f8TcqR2D zwTbl3z|+}~^G{XN@NFZKXGKL$$I+Cx3{$6(jvcwoWv=$7SKA|@kDOuhGkU z?pGY@Kh7{a$Y+sOAmZymv*-1-M(@k1MK1$SIB8Q^LqZiFs*vy*o$lqa5t`4x%Ud2x zlpS0o@qb)>bzGBe`!|h9s36@fC82bQARW>T!Vqy|AmES`6r@ACK@bo&1`HTolF|a( z=terF`wevc6oX7F4lZPk|XoM<3c`FnJH@U9uW~9ftEH9V%&opSl z_%NcVZflH~bvJdgHf1c_zgu+7OLvzv;4QYijxLE_|JcpdqcilcZZ@4gQ~6xI%SrWU z`%xa5rx`R*QRU5dq6;+dkYsJOecTS8}$3GO+)w32kJjTvZgcd9;)6NV9vFJ5ks$Trx`JT^)4<)1=}_e zfPvr7GVvQ?Eo`f+%EsPjZ$-DbVBb$2PdqP+-YCR8GVPOyLkySOG~DP5;A0j zms>rtxsM4yRlErRFNubH6kavU7-VF|pUf0PA08VVh}RmnKGC{c6;D~nBKW5eNZ$Gj z28v>-Vq3iKZ@6rX4s84>U*=ygvm=BbFELttCFF-0o1^3*37LE|4D=F35rL{DFF#WI zdBjZgqgxC?ngo_8s}ON#nP#$`p`v#RY*jioj<)2bhYr0=j#Ir`uS5^`se9~Uq6DRr zxUgY!mQwUAfnq=lpUTU3=W=|!agw3*>$N2CmCvq#3 zP2_;b+_ZRA5L}h|2DXc{AZ5rx` zbAe_|cmpiaa?`e(552&z8&wEuOkV~(MDNa zLOyEL^&W)6jV%GO+bSghfqP0*8Q<$4)LTq+DLk7Rn4_qiy9pzHQR7(iT-fWid6Y~0 zx>`I{x`E4ZY0@nvxFI9jUAbvE+)Uik67p!aiGRj9!mcYP;rPz)EKgQ*9hc7In~^3Z zlNLP@tllU#=wkImilIF@!Ru9;y0dtcXi02XmWzyJ@q*S^4xO`y^48bnc{Y&j=4R{L zhli=7TPs;*znm=|y-*J>|2>lgcpgocy&0b$Sf!*R4!%ET@dkn)iMIKg z55AlcTaT9*5KJgR$KQRxs8wKMj8vOKx7uT327#jpU)8bz3TbwY$V(^>UwUeUT>4|#-$G+w5+C!44R5_+Q$O z@b90Wd%A_eF~jCShb!Ko>R1Q zR0c?YdDrASkmq2oida;1v}lFp?jYCo^@N!pKmQ!m(>`M9O4Lg{P_b?zTV6(o%5c+E z>(}q}sS6gNJb#mPV~`$W|JEKI6jFYJ4_U9tHN%cw_THP z@uWn&K}(PW&?buIT2`GN0JF}Wb-heW1Cl?HP@bW4I7 zUnU#7AtoEE!|^pyONH};FS(=Y>AnP{Oq_KcJ#DO!DgAg5K88r%c$o4^jLGfMA2ABS zf{fCCtR7#3CuCoHz9-~N8|k8U1odCFD9AMH7ihD~9z(RvrQ5ztOFQ5CDgfl|o3HL+ z%BD*2U;0u$Gk2%hlKw^~gwWorg9KPQGSVkW|JSX%@0Kk{WBG2fP-~EDmgn{yPiC9&TT}2){bT(EO%|Im z3_6}${qF7g^V%37&qrqO-Sd-*Ei~001dy|_*2t=ls}ueU^0?F zrG!n614~s1hb~!;glfgxpG@o!=W&QFVO}PMr6&4r*_Tw$Ut48$s59z+^$AC56iCE* zCv3i9J|w?!XWeFLe8Ab}&k*HW(GY;0nGIZz8K-PLeC4HD7Ts^JJndv#ESQ$=8Zf%-!3wOik1JQ&9XKznN}$7( zJjV}zA_;|Qj$y(dXjuXbQer86pIJ``qBP`=zE7S#A-MF#w&=0`j{%=M933P3w~8#| zZ=1TkQZv{ER$J6icX&z`%Z2)UhYvpR;ZR{#7X1DJO(w~C+@S#byd=se{iTa=bJ-Mj z<#Zq=%Vij@?Ju^U6xdQ7-D7MEm8k4PTGHD>N7vIh71UWy`XjWH;rraeUR zqM6gx#yWhNOyy@)kDSGZnB`pkBS&u!d2q0FvHY3}NpJ;yQ@Pe`&JWqTj*Ti73C5R4 zzH|CU`Ds|9wEa|}egEQQwc}+u$~ns64q&U$ZLO2%ok5}{_vWTYlB3g7$^%v2qqp4I z8IXkqIh!fA<{*odSeK%&-Bj8`I5zE+Nz+xcJBX|zD9R&~u0eHO*0&A*c^F?TxzLKKX|Dnz)zD#87#Q7P>Y|MDwtY|$U)x!0Wg0bTzXAM*u#?K!AaM+~^ z-J@K_*S#Ut^{N1qr|^LK$>1|}E|-bZfsE}m3D~YI)PkFmbPf2!B5?GZ1?&Mq8UzjS z8zUv{biR8LJ8XQ=6zS}Bhkg|2vYc57}XkvbopixRKmlT3Z&khb=GTH%cW>S zWzWKuR)skP(lj!UM&4PFPk+Dt*fSI;&$JpUb<=TjH$lwr4M2VQR$Yz;iR3*|H<$K7 zU@9-I^rmI>Azbve-A%w+W!cAx@RbB!GDp349D^ij;kxhRmkGMddHO$GiSWGss7bGA zV$X{#Rm}+kGL?V#9G9PV;|7=>Aoit81{n?Q*=Z<55}2j4MxW*VF#)&f1pQs+z(4X2 zoaWp(a)b$Hr!wE5D8or**wM523FAW>Bj=q#A^!Fu)tre=hRfqn+-r)X$%|;h?*>VH#w5L4M-1#?bqXsxuEur}Xx^Et{`)Bj z1;;y&EVL?7IZ=#bNm3=yuOi1}B`!?8-a&Z7ed1H{y3Ulha><|Sk|XkMc%jK=zAu24 zzdwsA{H*W$B`@00qxtmF(_tmbhkiT@8kssL8Iot@tt~gtLuX&I{yu!Ko>OYldqn;G z6O+%)D_x=}!OV>~o~e_crZB(<>Uic(&BsR*xvY8~L}|3rqFY%wG6uF|J$hf8Adwn4 z)2^=-ygy|g!q27Guk zo|SY>mJ&Hl<%t`->cdz2mG83N3CYA*bmpo8F9rP-QP1HoxE{)e6z>*MSGY|f!|Ak+ zs>0C1m-a!w7p*GJn{r-stj_XyAaJ#}Df(7k8-EbPBlY+4zQotE3Cp*I6PgbxVu_xg z6LSwI1oe>j)3UytFuYCtTzq>}tht0~j0oAu$c>4`gmY+?$JKXU754geqBo?=Hi*P7 zdNnn*5j>CczrB9}(mLKC`+2Uu}#nYujRE{M(ao+rk zQU@29rS-Lt#GENd;s4SQPJ5-QWZU|{)&+ytw<|uxK9g@L-**tner78<0!7d3;&!Wl zS)p8QVlgrD6|Fr8Si%>#tSKg9nNWe9*Hw{nZse()R8$=*q*L>C6Sk?#!HU*JOH91!i4zA4a#%O zxzoI2fAm>tg{|;**4^#ep2P7jdl^*7ZutleTLJSED_du!sN~7c{W&0YY5M;nJnR6h z)$10Ht)ArPKxN1GY$_BhP6|^ICSsh$gMK`BM^#zsKUU7#HcHTuI20inMoC~Z--L{a zF67rak3+S$A>~i{Gwg~WCqE_2siYkOFSHh}qkMM#@nFOo^Wp?cAx?f{Xrl6X8J#0# znLCverOBV*0r8V*Nn|8L^GB1aKn~f7d2n^a()==bn#uPHxa3o11z%!SCt*oC)zF-d ze`}XNV488DpiastJ>!Y#kuK@}N_Qvk%ENFT?=eXTU;e~F7cAu%caIQ@E>5xR;K<=Q zUQomriSczg7rmYWQqoNITX2f*f9=Tjezrzt@^uDOgJH7CtfVvtUlV%kGTskL-3=n7 zW}KYW-azr%UA=QZX27u>o#hSdtvj+dxyB`Z`j+lQ+_Mw$vg7)ltxQ{;zpu8DJ(qLE zdUeoX3tFz)TvTQtflcMD5n58#-cfP)AoKays9@K>%2>ePl3~}rm4VZ^`1{pc`jjSZy!4$4V1c!S`%e|_Tboj`7&;FP1&a)_)yFUztI`cove0CeW zPy1GJsxo?s&;i?I%wPGBy{EcxxVj8`xof`#q1NVb+K?tDT{x{#pX|1j;Pj_`rnC{< zVLlV!Jzl&!6&F&xZ*LHy=Q;UcD97ceJ7v4Bw^k3Q07XZ2x$lu~l-^Oiz?mhrg%IN7 zgI83!4B=$=Nv+(;S6Et&ej6*1U0U98W3k{uB<`2HD?9De;44wQmBqJ&g@5&Fs?`}n zw1!Mhbag+^DEkSn&4|xBnn6oNdcgL*tDy^^_$S6&N79B48&sl4XO=j=FMYp-JiB@a zi{yQ4a1Rte6g5Sphb-j$zS-d2Pt$9%yD>U`(?0z=ip{ZoM124N@KEN?)5udb9{rZS ze(9x1b5cmh^*`-JXmrt=LnqmglEDe~&!QLU{$^$~Vgkd^m|{p}>a%H;@^T-~{;oK_ z@2P~qOXW%pYgAFhSaC#-(z>IgHH3lsb@%~TvrTv!tFG2!K2`W)vE6loa=sQBGmg3u zlbsr`VOD7xCtA(5O}@?{Ira=Xd*$daGvS9h|58=RNMETs*%>0!H=s-H@$_k>p%9>C zVpmMd#GTC8fH1EIibpROVx@F%d7zZ$5&aOVwdB1cOh_F_!@$lja=1I#SrC$G7Ooo$qCgbXJ&L(mvQO3j2V?xV!6F1 zoQ;c^-EDm(CvKBTzgLXA#8;mw`PKemX})d~YY}7aTf>pFhN&ByK{T+O!PKSey7ngX z@N1q+)p-&C@MVI=WOL-R%CI`a;epsuq)vw@?7+ggt*J<8{p_dYY9!W4A9>`~Yagm3 z?o3=TeBZMZ4#bIS_za|<>i8!LMjtD5JW6t~;mAlDN^01Tkhn3B=Jdc}Zvh8VQp zU+}xxe}6&?_d-VJVXVB%FE1@%Hl_k!d_4?4P$+{=5_z1F5VKJW?0Mpu_Su9Q>OCu7 zovj%TnoS7HG^4BhP5Rbl=mfkzD^&IxH0^YtXjtomD6V<-G3w8lcWaFPFQ~!4WjTLM z$)P9fY+!8P874!tmLaVL>N}UMWSQ|-FzcpAc!4fDKmCkmv@cP3Id#gzr6p&|ka301G7ooCc>xn`-Y&x`dDMWk9)X04S|r6gTWN#KTU>O%?41fKe72{XCGI^lbMO8h zgcyH8!!nwDywZvY_og^jbNlBxE$y#WxrXJ|1(-o6F71H6AwVJVAr;% zJ%_TZ4yPq%eVq&-lU?9^*IHrCcHMxY~_ruG=A23i}WKaH`CsFMw-E zLP54s-M6{YNH|2`IypztF>fHMHrPEGc?3#MZAB?uY)aR;zI7MI{El3vg6-2y)i;M) zR6e}Q8h4i@OOAqM;vG)XTxh|bnOzt~k<5$M#+~6KK8&!MRR1Ezif?W*g4gVJdwXPK1ETyT;<%9}59?NqsOn;L1R&23JiPoV)N0CN zJll@Ma>8E64OjEMlYS2NK2v0hPhaGLKOd;(c zp`c@;#mQrY3w?rLskar?7ZZ@g{g>~o)C#=_Y`SF!WR;!2O8od|#jV~s9UvL;FL1c~No^ zV-R?h(XL&3R@;xley;jrVzFgyXjDQVdTgw}<6u|c^?jU(CF-dlO|5=`GWtW1#m~*t zeaxJ!=;Lt}Jq?PeR_%!2BR5bV85VJdYSAM|D@8dsr0J&BJPEPNt^VmX6*F!>yGm! zIzORl+DjiFg-|EjEA;|hRhW@Va&*KLb<0nor}9`EhIWYI0eM_(&;%=#Z zEHfjDJD4R~kdF{UMNurZnz}g}Alna8U-y{)s)PDh#5vGPT$^cE*)>!BgWIY8C)TO0 zys|n%vTO;`BVy6tX6^)+SlC?wPh2(} zi^;D%p#s3J8@M%eG8}_H$x|iV_32*2*yXBRG6_2xI6Cn&B|1kjz8O_b;|FM|o_P^I zy`>er4v;7sEI# zUtWR`8a0%r>z5z2Wo(KIUl;p3k+xOVQIG+sxDk0eab4k)P<5><#eQkFA*9}|C;GWG z6=4(IdXVV8OV9xNd-%Z7&oOt~B=jyI4EuA`a87@>H@G+NV0Gmj#+yE(M|NUeMFYDc zV^wcNx$f!!FE!3|drjz~CmgOL_DA!WYsq``6o!M|_ae4JsPorq}IBv(mhcgDMu(Lg0iy$f-5t&#G4 zNg{1tdT+`Qv>~}EPCwwtXm~Q#cE!9gC`|NeK1`fbpspeymTNzdZ)`f03-1jFHU6*# ziHg87QyAE}WZUGTlu8RI0HI0)mhu~ey-I&eg|Zuu_2}VmFCuoU z0ZL)*q}Bf0a+HnY&FEKz;b~y)I}q{BE+6QXsk-!%=m4;#NVBv!$I9wp=8nsyH>+z@ zzxqkvBEt5&CsidW4|`El_03^c{-q5U7pgv_WYz&%ppy-Q{4!h0j5;%JTD^~_!EC}f zOY8PV9k|oZbX>KP(tUTwmiSc5w}g|XrJ#lDh{w3+;wfCF*s7^a7Nld#ib*hHj)mF6oEr{ zKfxE2Q4z0vwyS5lF_I~~gbd}?!ZT=<%;nojFN!kkkQBf2U)V2iWG|Os+UT5@->8V+ zYF?n-l{ats;OtYj!8qxQhS?H8k6v@2rbuNkEtA;530_KXK1^KPnNcBUwwYyyE$!W z1X76U6svxo2oy&Y)Ny&4mhTLOmIgY8-*TJ&mY(DgQw7W!=-LrU{#K`89#<1%bWT+a znLtfn?7kny(gFbS9yw31`tJD;3PQ*TFoVit(IT$<#!2$zb1LD?z_c2~@+`nf$5DM# z=?!dCs+zgI9$w3D=FFOtMPL@aXL3M&;9n-V3W^U-{CAxE?~s$*I!A6+c8Bou0RLOx zYGAA^-#gW|Am>XpSU>ed{Ep~kX~?Va6w~~!RX*S)0{rj|YqYs!k|nt66UQizrImrOO9jO&sbVPk zSn(`#rCNbEB`n&i??_}Kzk$@2Rm@Oal2 z$9m|I^nKVYv;>y_4&Fre)_39QE&87ckMk&9#1&D9xRt2y{D~9SrWpXvrABVNtrpN5 zxdM%q{qNWYpAtte+6484cYEDp*9?yyL&4_kuSN}*C>xD`dNb}1u=bUMcEL-oQa?(- zrD-XIw67vQh;$jF4iUjBIu=I%r_|E;ySW3g8heHpy9AyN`qF`v-t&w`N0I2Z{w(L& z5mJ`-4oEsclR@E6dxvmxt~HnT2p6d&9WeojDPvuSvq8@zF*IeEMKXqx6SBLwPpjBM z;E1KYTb`&aw$lRGn<#QXcf~f*h3?t+OM*Bm`Cf*k$0ntQ+uE4tR&184>lSupIopr= zf1ZRNorD+dM2nIw6c@6th-zy%#2*Ic%{yxvl)iNx0ASjzHt~CiW_+e$R|tM$OIF<2 z%`RYayl@>Bub~epCeIpEDA~a)-g&6+UqHN{FCjU;bt|wqy3I@{KXl*CYKRIx1scJ3 zX3iM#{aq3ainZvzt1od@wSGU+@io2pM^}AoGpC~>U+K_rl(}@H}p*~@qu7|s(pP1lka^vsR zemQb~ivJ~CYmmc7{@Pl1_vjJ$Rg^c^hp)4GKJW9K7)TVNF_oP$#gMjS{V_yd zJn3fBp`qI#(>r=KWkoZq#N2Mooxa09ongAUGJ>(OSJRP+0QB_Gz3o5xuz8l(B;or? zaQLfvM8z>&ug1I(W$C*6sKDs=|9TRGWhptlvNy92gXwl|AD?@ww^ zyX_+ys-uB(QER<)^JMn?BML4aIw5BOf_5YN1y4+ud90~YQi=PQqWD4z{zqee-M=m_IQ_jSBD_XEeUK;PJ@P( z38E;vnKrhlr!c^pHQhec3PVEvL*6iO=EW*jU)5qbbMdLw@fi=&?#MgS>`E5_*JWaZ zDR1~M)y2!f$kCH6oZhJH;n4T$VK9|b3*IctZRxvce*F{FQiv6Kdhop^T6G~A)x=J> zcA(r&PC^x!qp~r<0v;PUe>pwjYt0iCyjgHz=b82e0-XtcPsg(Kn+a=5gPa7M zicXmisYH|0BpVIbcALQKfM=Hp+!9SS?+^4LhOfZIz=4|-2?o|p3k`Z2=7wOJSObyN4dI9tPDkYg;-^C`ex3T&Ub?{&7!uLgj)^4Wv zSw;>~Y)tpR_~x-+!m+%eDN+X-;uYPaio6Gv((QUaQj^K)ymIkNH5us}0WLqEsAnjF zCO4vjbuzq?jVY6iijIySmLBb3-O3o$5baJ7vx{*H)`@N0RJS`96#wwp)e_}b^}QZ> z#r#N=6=a8T2-5tGO3%0`)5%yr*wX>F$;?hlt1FhdvBfmK)ih8P=a%tuh0Tnacos!l z5zoEI39EvBjNO(@>T&Kcs{7V+yE+~~wccu9N=wLu$yWS0r#GzD#kAB7n zjCfcUYgmT4KpmcG;MG0_cV5}`$ETTrE1FG1aSdCL>CLx15~zI_&a>hJm)DTS8Jc6O z^$4MBGO*DqTBgkU(p`&c03bRcFJ5|aT;^}{)!XNUWvgGKC1hB7bC=NON|oHAypP3lTYc5L4hn&Ub8n~#Dqyts)I6JlB`sfQaxrt4s)%5 zvUENPy_W0${ZMj^+NhLmd$dGFadxI=V?`LJq{{*rplDE*V%C>;C|(%yH9~f2V^z}y z<@PGSblpH+$ zPVY^Z!hDcW6?04W5Ry29@{xJySbFFn$-T;@quT(+>VxratS>>~pgE?=S`mhe<$j0ntULC})p>mueW9aav66A0RKq)nrp6SKNxM(lepMOF zbiZNGk#!JLJgcF%vG~+EY&5kLvnT4-ciOn3oJSBjr^7Dzet z@8lN+6hGw_9S&VhJI_iuc(^-+dy+u>h-lLcA-&V)cwvpoPgeK2yJ%-nsdM1aH0RLg z{Hvpj`pq^o1D|v*M3p~ zh@_wlFcZ_y5MVzx`XdE#5wR)c`A2}G4)QhTuti0CY!xklsrIxW{yUiAz$&|lwo_LR+SZsH?!$j4tDn8A>pTkXvS*zo64 zD!^@(1XsTbn7^Few$=X@ppd$8r%Uk;7XZe*rL5DHJ7{kJBZCBxm&dI+h>Hu*t8FmK z`nuqh$4X%XU};%YVOT|4S>Td5j>08}!UDkV*hgv>XC5GYT}eKlLw3rz&~P)PUh)9o zT)bNWjWPGjWjs+Ski<+yNvu5RxziPpjrt;LQ}Iq)KK9I8zUwZl;8;SI@TTc&yi*ID zoBbgA5CyqKUF-FfC7epANySoE(JBir_5;Nxrx~=6+f^UWFi^yHe$c3DG^jpYZl8U$$>ROj3cP{=Kb1 zYH-B6?of}3UdI$n51w~&u1n^Ed%~SGw(9T4$oQOwVPUG44Xhl|gu(lbAM4G;|bbKf#{Ies# zO1SS9hb_vSKp$yd#@cfWeQ0x=YS%8N7%2o|t)RYV1U4H+ckk0%_}eTIq^}Noxb?oa zI_<%ZMjO~j()Y$51DxNdd|3%Z@uZjlFo#DLk5HKIvnm$ttaPsJ&LxWc(smC&*bb|M zk75+;6S*X(_vU$NOoQ9(J8Oj>J9e=R=#Lad*f2? zJtrt2`am>ohLfUu@1tkXZ4aapalM-r#oFym9s>~@wF>Y@^Rln%)OJZY6hmR1A(qB; zk2?wKR;!22@2lXKF-q{wVYBIkadg9-VPLDN45*^;oF#{@=x6s_;V%!?Q{i^ZwgWE1 zG?4omIj>i}<=n9Gqpmoo4JkMNIDew-Qt*zY19Nb^h_RJniM!78K_se=?0^StdhizB6%d3NN^N5fxTH8$_o1LyIAIw4T^n!=Q^uN2iQ#3X(jK_H}>D&@w zI6i-*edIwOZZu85;t*`Q@DzR7ln!Dcae=fo^((8|>lwZaG6M)x5~cb+fim_|?q{Af z{7#ehNKB;+E|Chn@DZ{|DoYH^vNFuHynOVlp=^<{{+<@BPuB?kFPwhs?=c{9s+!uw z?{7fulF+%u-O? zEx&~hqWGfsBM3I}ty>hkTYqBRRVvMq%3u2$D4tk^L~fv8my=TtuIwkDKfRXkUSUnZ-Y z^c58Tnv<#jwp75F=Zz&Axiy2zC-t1MsC3^@E|KSvUDy86MAACf(xO~WiJSjkgxOZL zYp^XjD?TWS4WUYwCIsBDciIF1QR}Cng{4hIOC{a&kC$(BRyK6KDj~~*U8}Mk-#B>NWkZ# zN>nsBFz(1h^EcptAl$IZ1j*WuTR4g7#^C%5qiZ#)==@WCKJMYnUzeH~Zttl*KN^A( zO}%dqFSh#7%pP+!S90%3L8;O6O9w_}VdS^PE8pt9{BlD5s54(xY;v3k+}3`zG{Pt` zx*nPg8mb?6?jJg&q?;{>3HXIeIjM+=IW&n8@~pdBRh@li7*e5NdhxW@kpVP57WWl! z$S=`klm$+k7iTnD(WCg2h(7UWV~%1!S|}ZJNaq!C_xj*MV#dEs0-d`( zk(csi{(*dA!b@NDM4=OvGBsf(5#z?08QCwZ)o$W16bV3b0EvP897YQWUXyLVG$5Wx0&cQZ+ZcT_aoO~(Y4_hh$42oWxD%-rt7j|~4MzS}$* zd}L<4YK}26%IfVxBzco4QwG@z)hYiY#{~UNraYnl1I*bS(*UQ4^E?j?f*xD2seXF! zQ*xNjj#1L{HJERA?ptr5ff_VkQ9NVrcJY%=0wl90qxCcRE7FW1A0}>f&?8i|;!wuq zdUm++`a<&@Z1(2qb4hEhma<)Yj)zl39vVcc8_3Q8(mFuNt`0;W@f_~clHI-kPUj7_ zti)!|H5?GnUz6ZmgHx{zco{==Tuw_ar<$URv~>}YT$Wq$8XFCg?k;zBGx)BzpCX5r zh8%Vq%Xw`0EU1+3W>cTW6N~LY7aw2y>#dN{RP9e>6@4&F;WcTCVzXZbXi$Q$A9zeY zemDMx;`qIP>Q`W6I+mnqA@{Esxau_i&?%g=GIWLbN0^elk`@|c89Me{{VhY}qEGwj z{@!eN+2eq5>J^0MS}0da6%nD{@5t&oh#+CxT%ouvoO;G(u5VJH%&lSndtS8+g!V!2 zUVUK^AhGP<4yShIKS0-;7Q5qtH;Rdd>PJu-@f)bc%QBW{v!7W`2E#u7xO#%ev{UBV zYQj;I4dQ?nsiW%MNu8;@a&Oxs?b4zh4YG~nr7p>inert-SIxBXNDf!0_p?|G)Z;Nu z>0{N;lFIZ5s*7>^rCOJ*koOx~S7W~Ac3;!3vL$MJu9ElHNVP1q0J}a-vwu#gh0ED2 zMS}TJoExe)C;1OU-DFqja?&a3%+rW}UuSYfw0c{wGRO)@>)#KR=*W4yn?TMRgPNWW z-33mp>ld8Lvi|6^U)D8PSoEsU;h=-wjxvkfasD;xMyI|mLvzuz+7ZmzBa!qrrzGQR z{QYI-%4?mf8_l z!;4nI|DpkZTldpa5ijIAAF1@A9Dr2Q=(sBm^JP_))LC-3eBTwo*55!oU&F1MHE8gFn!%y5QrQ>3f zB%~~0#Ryg~z*OKi8~mJ%656tYB}H zSTJC}y79B9)y^{lVY}6$8ADGQCbZ^iIf?U2RA?0?sv{Kid0~|&*L!BXj#0L`3+(2bULdKsD3sh zd}0%tj9!N+nxy=8+r;)EBLDCSjCbk#iI^|wuhbLx1Y{fgFuzRw^ZdOMSVw#{qG7^ zX<0jHL#4=QhF;>Bhzn)eMh~r<+`2kvNy#6dZ+#BZ0Em9m+okiOCv!!29Q<6V`9`%q z{^R_`LKcSl<#l?zo?pX?R{m&t^Xla`FZ} z;GgFd-kU!&$KWPwHdQ^a_eqC)YPnS9^<;-5QXnqpYjJWWRmVEVLY;xEJ)CGzanB-) z_5=&W0h}^Es{*sS-oGT3ZLy~|+bpCn9!iryC`szd^A)s5KXb3T$E{*4#jSn1m-B%v>fKR^Tex_akpDZzwpgmaDsc z)+=X)Pr+83Uj!49vJD!|eD19Cy1#5ldyY!aOucL%Zgs#U6yQLnfg zarh+4jn`(0gs}hGmsPk|F8f*t6x+AjSi*;W>d-$r?00yl`6j+q(f0t%c<_AuG}hwV zk4sm_rP6`nx*lkLOohU1Sb(75OsGf{dnwOHy0rVqk-Klf+DxWvX2xBUOP zS*7r=-Nqjqdvcui#*aPF=7#DP0R@6GnsEpR!5NiN5JV1y8=Fej`RQkh?riHo@ekEB zPjK(LzxXkoQ*k}o<8NKo=MN?XN{o#?&VVmOnG21PcTReRog74C8*7j_2aS_SSz2n9 z4AC)TCZ?q&K+o9QP*6c%{Q!W6mQlS&Vo64VM|!cSGCs!OCJ8e9Q=MCGpPJ%c>#ZH= zK{gvLf@!s05&V8|B-9@aG-moRk@xlPyU-R{?yD7`l3T z8B)+ECCj~sHlXP;f|8`_Fo1ORNj4M0+eIt*8#&bAa6EoiXWN4m??K1y$f2%yANw3~ zPxwVM880^;^ymTa;={75>VadUt)ZZ9xI*)W89u8PatWi*MY*O2=-I-fc@6hi*% zFzczwV~#$WvFhfyE{SSkg^RnbE&5o^vk}n6Pg#D@pZ#&7EGlAG6^c=9ufDz@cvh%WAzakTA@{6ObL$e9_AZGO+{ zho$xAF0%&;n^I+)nZTEd@T63ZNA;|zV1x_>zqk5o>zboMx2$;(Mjy~&A3A)M9cc!zvth7+2Z$hul6ms)iw(qVZ%m73Ks!)x-WM8%uw!? zxi)J%l^R*SJ3^BrJZOW7pQRb-hM|X&1IHD~cnxfXW1z)4jj^5cx8wTeQHXO(_{ zBhpRe$?C0L(c&bmMAo6CKi|;E&E%5=GNALz4v9mGxt>Xp24P|qPO+XI_mg||6<_B~vWgRK4dX^bRw-hDDa4Bz_CS+B8 zN<~D7&xD*CvivY(TIEi3z}Xc4VBT1*c`j8`NesIAF7q}ZD~|^bG?qQ~`}D>xobL6t z6Law)DWxZrv{OAfZwQ^bv7KzTI=dZrRgo+RyYO=p)&u?ae)9)1C7u`f?fYohCkJu!!aU*O$8oBi9>c96yYMeFH^KTd_`f}x zhzpO4p&y4ykpg$pA(MlXd#UGq#gQfu%J1OdwD=;I5*>cRb7{kSL9S*yimt%11Z>o;bDc0{6E#IIw_bFlYG7&A|Ptc@bjLuMXNG}mX^zhi!9KV~7B@D+MYBw+Pt zO0=oH$+4U|S9uuUafd8pa&XXtkW>q()rSgU>tUalSlIX3X$*n-dTEcG^xHIGbsWo) zu8<`#A{MdM(VlI&H(e?uVSyOt(GW)JzSCJ06~izhBGO8n5nWye%G{U}7mCQ*Iimqx z)JDR#zxS#{39UsGfSD1+Fj;u|)-BpH-H(N>fA)4|3bVa}`p9#eGWzJ3^PUZFuLV6E zeCE3Er*xX6^K6)>Q4*Vm7bQDx>b@co$W9P4@N3LeGwdg{6=2Cww2Y5twl`$utW$8) zc@OQ07yR&lLn7&a2+b3G#~~((w8=S{aQhCMimmPg9S2gYr&Uh)4EsH|rlI*7y-bDb z<&C*j7rK7QeGH#4JCK09iFj(2nZ(KHDx|EdWhIh%*~r!7oik?%sA)o}?gy}h!3J-B zhJlW>yuPkK!l&W_pZ--(Va)@JsK!_2h$p2=)D9O3OXX9}1^K0J0-dLjlnTPu7Sa=6 zu%8TPjlN)fIJAzBf>z`H`V7TYVw|;OqYDrBh%-6t8RiX-#%Pn~?rB0YkE;$hm!bo<5bvK2+`uUM@F({9g6z*=>9sP<9cMq3 zN;Lf00*DF()B|2&7HJg&{$PBf*aaWYJoW_6Sb{x4c`91xsk2Bb-h}waUGWPR1`Ov+ zsYbsr-OX_%ais;llSo}8fFFJ%W@VUq&$s{Hv zmb;Bc%`p8IU%INEgbjihJ#7ntsD(VYAZMS!!>9%S;kJNZvs0B5zK>-JPh9YoY%lCt zWNj{@?s4lFhe+2NOq5vONYj(<6Irk_Iak6Fde&D=-IwI1)z~}B4wP_iZchgkpl7St z7xJ#RzKbOwA(cjIyztCUPSxP~u#cF&IVI;Y+`>IqQTlE3**C02FHGI^@)5ojRgVE3 z*)^%JkwZ1({>!r?zEZ!h{d1?^vMwI(F_Rq}IJERpa#1L8P1P0p3Lh|X4?RJDd)%e+ zDX;QkCg3!Y=L>Na1;H!^!x8mhrY^QzoZiy5yxC%jWK$9X9zAFKe^kANU(;XvKaQd( zse&RM0wOKlq0*&vcgbjwE(HPU?h>RnHhQB=I>w|%w}9k8V#pZ$=KKEM@B8=p3%18O z=XK6?J+Eiz#66ht{Xo2EFMjZb4!lv(i%icKiDk@O@kXne>^WXT>1?!8Wy{V0$^{ip zr1b(*!v7R|-!*VCT>to6ett?CDEKk4^I|-}tel7u(E90NwACA=b$mxjT7%`?px)=c zq50h{NzSu}%BF6)E$VfvSJ^(Y2HI9ImVKh=bEEcA)mr64H#;B|;hi!=+H}U9W*J=e z12!oBfe1m;UXt+df)@mEORD{Ht~D3pyMVTk4>WP!A-Q2~aZ5;cHQ5hIG6o_E)N29Z z9wDePT<(}#WBiH!9@(mQR%{B#dHyK_!Jb(?xGZl<|G+o*U}}f%B}YM5Iv8`&*17$( zTHQrIo4fn@sHh6iq97Hh8Ju(S<#Hua*o*0&({GaJ0y|&4eOMyOnDn;t4)Ng|pS@|d zVz&W41FZbEplSN*LhC$=Gp76v+=Ryx`N`t`s!gkEb44=Wj2v=_+Yi2_@+xG`f_%G> zT+8qZ==69S`f7n@Xp8E$H8IH+jk~g{hlu`cKpfleh^CNnTlHv(CEClY+Gi>J96B>2 zj{huh72ki!_HBk#%hOXX8gnp7p9&WR5sL>tF=Ba=E)wEe>ZHT^EHIa2)Uo+I59&7x zGIMSX!ViEHCD0ENcxX$0u14`GOgT8(JiPKRepUqhcsm+a*9p!D8oHhO;)^9}8qewr zr}kG0l4B~C-~tZUFUEe0Bx9ggl>iETwM-+0fhw1NCm1ZpX_dC_Hr|yI-t~Ype7DU9 z$ioefH>^mRvB1Pq17l;X_vS^GoLpX^KHFSjK2S^-1=XpEVtzf9y)uNz8M|lDq4M#3 zMnQ<8NFZi)UCxOgc@Cm1Dna_jqoHp5JiF4OK~QM*upv@k1AN$)i1b_Ubu1>gQSY|c zLnb&;Sbri7!s0FvfruPT2U$?y+lJ`yR@T%%KhV)E_>hHmlXNYCx`(Aa(M8}!?E{Ai zRB=oW=w^H-NTw1PKW8=2OUh*f0bMxZELU-sB1$&JBx+q>_C8lmS-2!nS^tx-x>oit zF*ddf2M%qz-(Ns~-w(md(`#cJKmerYy{D9PXdqeHLlHHyLMVgPdN5aE&X@Y`^~MzGr@3jU zdE7$}N`7r&eiK{@uo0%)@CU%BO6w}y$^m;h9X1+zA1-8oBh4t5*vo>Nh`YP+zP~s& z8Ty8cttWf_{rp7&GOe;|KsN(?_#x+{nrkK)!*HhqHZN zEJo;%FA@Dyv(7M3V<=FFH@tVGJE19MXulSu4Q#ix_TCn? zY+M6$2n_#R>*80Eo2)gp5h_kKj)8Z-lwsUA&tz3gmtFM<-v_h80wuFGIyZ&ra%=H>_^bU*P1GLOgD z>U(~r^~z|w|I>R7w3ZXXJi)HIP;1jTkMCaWrDBYt6S@dy{p1@zc_Un@e{1v@oBPDX zE@^%_eef(I>?K+YmnNWuv*2XJAISV+oa?O~=dGYcKCV2GQN&J3M>~9$-FOJMt%0IoHmxVnIEQfYj+A+rg^J4+* zX3p;}e$Y6^QJom^8(=20z#ogXEh=uiy%@udB{j0JwcmceVMSzb+B8IgSd0MRtf1(W`Fi9@b@`p^;^cXQ)%FEO;3F%OFpb6D4u$#+1@OMZUmtHBc({Z(fVPn4kZb%8zF>EnD6ZTNkX*n`ee8OM@!%VcI2JnPn;=#fXAgi3zANpU3?h){nAmmuP>?ssa{Ea_|D zpiZaLoUd?w*BBoNV@`P8+c&_9@b}o4{QC>jUv5zoYdZUAH4$xi4=p~ulW^u6y@>rq zAPRO9nDOWmfmJFAu}oWc=AAc1m`UEK;B{sXm}wooEs@t|=h?j+Hx9+`rdPRLiSqo_ z$$g8dPg_4Kt)dE43Z08u&Ri3nBf+>oFbBjU{Q)FZ06h!S$=jBK*}PLB~vjQfBNmG zrt4lv>g7AgWRCTO6Kddx8rHSWRCbr_WkqD_UCgd=&#dJbnG3@{Atl3r7h5u5^yQH) zbj4b`tDANx<=AszOI3XtBa!?ofjbU-R^xWRo8` zOe@lrVsT92u}qZL4c+3+F7ELnt9RHrtBUJpn08(r&2zh8o2CHLwsz{LzS?wfD>>5L z_GHp0L!UFmXI_KakxWZiD*#&6C&1sq*d>iWN&&*Yw?X!kOd7-@p{jayqyoe;-@(94vA$= zVWv=Jr3|3M|5h4o#9niW@Q=ZXM1r#i_PH$2C8|;y+eTleSWa$b&qfh>$Z#68KTKy+ z;oupHtKN>RO?f7F5IAa1h4ZNrhv*ulUb?Xq)9cN-w)HTMEm(71HhFj0`%s2Xwj@v2 zi_D$=MOFX*2OAe3Jcr|dPIZLP{t)?*kF+*5T0SH@Zceb($AB$$XgM3`|SOJ9(Li1K!cFOP;Nk>70bfLi3Y8kPs#Z~ zQ?$nYM)~{y&@hf^#DAe0ToeV0@BXAZjbFOBrfZ7?>=ulPnk=;I7Q@3QeGYVfq0KQj z#f3x|k?WJFrJ&ahlYVl`di(b(bNq!P2WZMQNL3!|CYQK>*bIVHQoGfFzy@a@Q6v4* zz`2~Qa47-^ERpmq_LHWn{vLdYtdql71&h#Q#QSoaVpZY6Hg%ZAzy-?Et2`0ppLl-7 zK+X>!U3r`ciuEh}7Q8vpMIO$ZAU@}eFfSE5Dc-I%X)b&aeDk{IKzhOVj5E{2D!i@vZVn-&DifoJOH_Q- z;~^kKG0^m%nuO%vn&f3reQRf!{ltJqg~uewd0zd_t6?zTwuV*JIV6o2%znP)en<4p$v(Im5(%P*OMU;^>_}ipS z-~V<-+H=pIpx)PMHpv6eJz~V#`JmJINf6HJ!r*tTi!KYg$llIO#BbGvXqySSH`se+&Spri2k<0@K=-qmDzH|b zbnk6t&HXK+EaUw(mD_{c-Z1Ky{@@q5r;>-Q54;JUQOP!4(Fn)@y^vRD zAVM+znv*N7hKm3C!543o+8+R;T#x(2PNERzsxI`B(!rdxXNGg4ZPvrK@v;R_k>0X< z!u==g++c%feCMLV-e-dEVZZL4D62@VgY}-g2`ly2D)f&fDQoG~m+Z8IR9y|QrRF!> zruuYBJcA1tAYQ`%SBCfhTZR+&27$E7-KM5bPO(!XASe+__YtoLr!ik= zqFofz^y42l>k@A|Tu9T145CO&`mOhg`(%Dp{w_176etzBU!)T~(PP=sL{P7@IQIoc zYVpA?d4~0##njs;idn(3&`wj3Q1}Gj+;k*bYft<6nNzev#6?XsD|k4xzL^oWXIWch z;Ub2eMi*I)U{kltEvN^#PUn*F)^yrPWNYMOa@=)X<{^gBn#T*22P@of?^zE4R+wh2 zGrHsURR_csQ%JlS8v5G8H=?D*$A)*&3V*pv(e5|<4I*DoXiO@n3d?hjCxb+$2Q)I; zdR<%QOepLeOcKe)UU<0d{vu=7+>Os6jea9iVLU_wZ*L`@3OuZ0`sH&tcox19Q3kcw zIJMyn_)nAhKQHCCIBv``9$HNy>dD@cwh72MPB<>9#TqR zN1s3Mkwd2lT-(zr$8tY*zN4S;^G{0UFE?eJ@>;htP!~1LEhyx2>Z4f#(fX4Qk4wF@ zrlc4bwAb#P5CqlUvzU%^^?|;yHHC%e*)S4CM`~7JY#m(1%{9+>(QApbo@Ip|p_i(j z%lu5i0A8wl^!6PRyp;yeAE>M`J%)zzX@uD}(q^xA3E>qP=Oia^9&e({HH8 z&Sf=vKUX1-MNV=kKPl}@K4ZNPRB>Xer>P$FK=7%GUo^<3&a}Lr+2E_f6Sq=4%#$%{vD~G9_33 z(3eDnJnTaJ2ryQ!eOM^icryQ*T>h5s%B#wv=nnn@zMN`$7vqgBd)Bu~rCg9(7c!(w z?h%B8do`{Ir}+1;XFohABu%p=Ezbk{0K*8pZr|2n<5%(3OQ3C_mOQ7piqHOuPbnPZ z?`#J+8@iV2=nUS`hb3DagsE67v*A3yfUf7L^s80S_0yTEysT0$9mj1-1P?-5rol#M z?>4-6?iGLwd8gE~vle*{V94$ll2i61;SXktPi^sEyHhLs#>3Jw+K|e6?Qu0g64{&y zd5wopR}5{~dHPUN{KzIFCqHSRsu`ir;%vrH9Y z7CT!rMsy2^%$I!OfdHvVgFuDZc5QVh061P2WBS&t#xNq z!^?lZ>H@sq^z<8o;EKxM0SK6^o1PJK5&?9TR=m769;Qk~HP_|cg?&nY5qk#S_I1M* zT)0#C^edI^nHxc*`q7g1-Qpa)Ai&ve#9w($z=qPhN)N)< z`k#_C@jsbkj9Aqj8Dq~o`V$>CHnVnfk$1>K9kB02J`rEM1xFkhRCF2*m6W}N8NsQ> z9QNrOH%wLm!w%QdC~sXZ@z7tLotNta7Hx1KPCn}~HmmY|P1Cu`XhE{J$d_CvIu~E3 zf85u~-`v%srC>4zj}H+G?(AC_MlDjWnXdRk@01UO&CpdNb~e+sOF#Hu$KK$Os@s3l zU7n0;YLj<+cHjd`&H6R=t=044c~o6nU}KXY;cBBouXfW+w(UP9qvr)BqT-PacFgsJ zhq$zXdj=_rHRQx-p_y-)s}%^!R90siC7K8Suo?a*Z1Bg87cjbbZo{-M=3*LV0!S=# zMUUx@o63X~^q=c;SxucVR2^giiUJzzAZHbzupM{V&_l+h))S{UI@nOqdcRg7{lEc> zP5c~)yq*Qr?{lc`Dg2xF3Nq6JroC>KKHs)xHIi8w_>SFky^;g{{ESiuQ{M{j+1^j8 zMbc;i=?R|R4$tM=lAj|-%!wpbhBYrr)>GKoynX+-6u0O)_F811Sn3~tIj~H56N7b& zrxq@wVs4F_{zHN-p2r0c>E}90)?d~<4aGn)0@r2dgQSbwaYB(@P7&o2;11X=SW%hB zhAR*IcrOCn;15ohoL{7gK2HAi463zoTWd|uhxU5agdaNrEghn%zdzAKN! zsnn~KPr~|t;AFegz)n03;9+V^leq0eHlN!2Xeo}d-5(ON+Md{&j+3(8^8zYEGsE4p z0fGC@9+7v4EczW;Ak>{KlU~QJ&C^ZpOvrk%LfrbIP(V0ZhO&7)VmeZ?BM3OjFB7V z-|-_+WR!UoK6&A{?`7&&L(ca}8+N0lef($53mpD{lixE) z_w()E-HfI)S?md5TgtV+Sv;*F|m#V7E;iI zh2z+HQ5-*{+@uuLm>)k|cz4OF!SLdQ!0hepry3mp%&M)!7c1SAWthOnN?By+pITDi z^t?)^DOv1$+T>yWRf9Gn{rOvQ?J!->gyU-xkGAd^?_8tbO0?HGga4Vz|68n_gvr+5 z)FRgwg8TOsO?;$)b4uy23q(t*ihJWgZ&}XX8qq5e%lhg4`s(J4e{;JF&EQz+@PM}K z4MdG;MF+%BplMB0zkRyVtLPk6)|9WD_BzJk-n-b`!=I+LyxVI5DBN67R@a8mpG1gw zZ$j3Gvrwo?6|TFt;`mc#QEoHFNucb9s8&0Ylh-Ch_xqGQA<#JCG_g=KJYl-yZtW$5 zGJzAQ=Id+QpWFnv*l2bR*YMtpBoaA7s=ec!Y3>g99nxokn#uKw~gAT zY#rTtg6_*$_~W{qLBC^9xQJ%=%|U0r|cM)g^YSEOrQ`=7P`Ut#zJM-vLcNxBcIk0q1h z-Oj~X#Pg?}Vsh)xJdsW^3VQgJ?UYXny(cB6lZ7;I+p!@m#5w~ph6f!EXxhN&Uu?N< z7-FUs1MCvfr{VoQ>(<*5v$m=ca#d`t9V0hZfdLI;F3@2v@|B)53)0nG*HcRnY}R{} zBx6c{ATO0BwlW|CT1{W+8>?C)3H3WOMpd0#>F>Fhx>Hz7Vzps{JRT2OZ?TY@-`~hW z7UY2iAQs`#Me7*5V`xFWvHSC9Hg)t$Z8H{~)f+X>(KR`9rJaqe#WYHA`@37JM#g&I zopVZ8ymT8sp7I)FdyB8)j^~`s)N;qflV@w0Gm@I2&8kd@)KP*qBs6}EY*eHW8mv*} znK_L*F(D3lPEx3y=^uQUvsI#2Oj|-JUEgni!os35N%I_hE0_LH4Gc&W+VlDo>JOdt z8n3C-yX^juJS157&mD1n+H5DM+yRjSe5w1;eekwejcJ$9>z>V3Tx z$bdZa&elWro_gPCYB}T2!y-+4I61}X1wAGo8#+(Q7^g8bBYNs(0>RCHK|U)y+4TF< zB}fkRu(RnN)Iiy%>L;}vAhK`ek4lfA0eN?{YIxAoUVUx-&iB#x71R8gdb_X9W{kU= zUhmWu$Jsz9b|qbHzNNb9V;aI|!UT8Wz^WRCnH#BgFLrO9?C*th${B}sH%sL-d7D^6 zY@9f;Y5JnWu<((5IC$cQoiBvoC5P{yWZpoP`-{zZ_e79)vgKWG!y_BW zIpG0bpid@FmQl6ln0Z~Nx{i~}DnojArN%=Sez%(5@)JvsZxxiMXZbMJO6=J(&aRuY za$~n?`pavWJ@uY{c%@LLQ!?|Mv+5$AmTUj9t>FsGo-Cv@tnyE#b|drhk zcwiZxUduOi+oxu>5-lHni;J>TW;R;0#0%)+dx4p8#nIu{`pI7Cce-n9E6^^TRt;0V z(W4qb+bkv^2tQ4Hd4?*vsSQZt=D(E`wi&TDlM*1(xwau|Gl zvSezEn!aeq=uXm#TRj`w1|Dwg%CK7){1hipT2~6v&++?tay)%_1R}i35PViamMd!C zS0GSG^1&-(x-oV}lqDv{I6P+hYJO$GLJC(-WL8hP+9S#w;$3tJh09orX&1%_N0Tcc z2+NlwAh0~xQVUke5s3UOp0t3pat}@He^R-5&z0j>FJ}^`9={t&Bbvg+TJ7fTOpTFV zW=J(Qr?Ec2JTVgm&nUSC;_vC{6X1X`eRy>}0?Vi_) zx?OIt%-aJ88Kd)l|2iLAMY(xX#;h?%edK^66aCJD$MszgFRDvnob!ZpENOfRETgG_${4k4SuUpmR+KId zExQNPgn<2DZzZ5DpmR8)h>Rh&EWqbiZVTN0(H}PzW-ajg%UQlm#=wmy5s7y<0XkMM z&p7Hpz2M5&ys3*ezs$Nz;o=K?Euyfi<^EUxb35(Dr_9z*?rYaS?AP;v!j5$*vWKj) zZ|e_dC@|hKpqcU2qF|-Te%vqVT=bj;xpO3*@KQMKk#!=HUdVNha2tEEPRnPWJ-;uK zJu#9n^Qe?^M2Y+7w+Sh@4pg6&`8_}&g@@ZC_coRMC(5DBH?)CL_lSTxDn_6zp5bYG z4!06}v6eF~4GpyfWCm4Y zVx#&oqTNQ1wx|FZN^vBMZln3Zw^vyQzQ&#?(TXQ&xE0fY&(;^4zq6-sIoi}e6j;lF zu>xvq+PHJ`yuG9-?sopwv=q~dR~Va(zd9Sz{W27Qcp$HQfbnoX7@G#;tJTS|dAi>f z1~lXo0B_|@?UlvPZYO4<^s+}O>)G^~+$IDojkyMp9k2IH!>4n&Yl_S(JWR$E1yX*J zIeF}En}3KE**tgx5UHc-+GmJQe%chq10;n~dc_SE|4tuO5p5NlM4q(vZL;)aev>$KJRld8L&8ZCO3tta@O!~QRJNEeQwJY=K|L4+peip#C!mBPZk@nsF;1#$;f#S|C5 z0}Gz0YJhQ}NOOAn7{MBeFyFsIy+7M?VTf}HFz`4auujC)_Q;ZgI;W8X)b?<(AFzTX zy($`eCI@D`m(u2nQ#0qgl}QLcdfdw?KK-IW)AFmUNFZ|*!CkV1QyxZT3Vrsf=g;KB zsuP5#LY~NY-Lrk%6w}FA=d^bkPzf3|1mo2@!d%}H|ISy=m|`U)_Naj0jc~9!!#+O) z(6U(C9<6jfaG7_@VNLIKIGVEPIe7~!1)6_|kKiI-%v5!;x$}+%_PSWXJM3#OT;}=B zh@A=lvkVOzOtVx}g%IDi=4*@=z+w66MUcgSVt(Z;oezIofp%B+U(=G&f?}fmQq{@G zoNnQvvY_fJgXaeEZNJtC>GwO@z>+2;+|Yc!>#MyD(?Mh*q>952?v-Ktv-fp-qESN_ zSiis}$057VpGBoo046p@7j5vj4`njt`>*Cq3ti?`-fFl`L&GKX6A#z(LeKw*to&(TkR_=v1fXft!|dg;PYRM<=1bwf zUa5%9ojzAv#_>P>$I?3ENyM!gNA}jF>v7-K94Wm))VX6=<=sDXkH5;3Qt(fec}ZNy zNV^?yDNe}&`S{tq^zZt!d6wu(M;f3*R*k5Y2SncoOVT`;$MEsPo_p5(jC1ZYNee>~ zPMz~<8O+d(B|KOUNdm%o)8ZS|2WLC%oenT~dMKSRX#Z)7y6#?;zFnw>i05~G0Z+E} zllObk&YQ%GW}F-AfmSDNPn4puZNwjb=YwgV3kej?e$$B!Ez}$L*6Rcoh4q zZSm4sJ*>uBI1ey>`OxC&@z=gjQ$$R&%0|d z9q!~ZZqGwpjN~vveZXJBtQe@Or3ECsG(V{dv)kIfEMmNKWX4y)Oph27u1F$G!b;D! zL|Q(RJb&=XIn*H>Ta-)_yoR9y+|n+sh40p3rBCMzGc!sV@zK?-9{61GPkt*YTHn*F z&fJo|>T(tt32am*6K7YlEEy|K{5fZZn)SCJ4HbnE@^M>sy6Ezk`2rR@d}YCe-K%fN zM`eB{8CS%KIh_@bZ|G2D)Nb4x8I)f8bhC4HcwiBFyy0eL0q;+o3t@PvIHo@Iz?ozw z2Pky>Whv1jYeCSn#^?jz{%f1IFT>E-+{>;-5k6$%*ei}lGBgk;<6!`SYHXY zzy|1TKMmEMg}?MP&aF7Vmb2L1ux@gz91}6ni#8eJ@$a=wt76 z#L8l+7H`aRX?wEj0=)Pgd8%xbw5d%0IQDlcc_l|qkSGE`GbJ54ajC=dX@;vwebxW$ z!^?m7VT1A`F31^P=lj}*^SBiIvul;dH*{Yk$ZXdv zWN=-QgN3DJM17G4YSTO=1~xmG_dFJA}}Ktvjs)a zuJ5nFgka*nB7D|nzOm@@PeBFbtA^ygwrr+6fl87t>y$s%4UJ@Vr#WL%TFph-I4B#R zvN%Oi4hTj4Gq%(CS8Vcx4&@A;ey-MFf1)n}_9=YiWSJ`xxPuEMk3h)1>%ScWF3@Xp zEBp8>cYfvgb?z}v*2;Kmf561#b7)p^f9<>9z4Ioc=VCD5K+Q5^0c}3w5_2;>2BStV zk>6yyfzos*2{__ykL%)WjPMW*wbov7F}(vOgit%vrN$t?f3m{!#C(4GN9wbO(SBfx zyDw!^<&FtQJ*Rgu>K;uGBbYqC2kUbcwGCuhT79;3_7X_$W>Kwkf4VD8U4eY0`B||uQU0Srw>U(!wF2$(3-vg-N(y&$7<=~b z^@~%9uv&Ac9Z@M4b1)Cjp`9T8Axc>voUjv?|Y#A~WKo$u5xoKl~ zIf%eqR+&D7gTWt@{TzD=oMCLw7A@}9yLEWrgF*5%AaWkujpx}{BSA6()cC_|i}Fj(s2gB4L9y?6a+evVg57)0Evl%g@-8*QS>rKjuf zAf%>yvVyODT4auV4-vDp_k-)zXaTu<%~j5y47@uwJf;CNT@;UekR3-*7l-`qu3hUH z)Fa|4VyT%+!}`lALM^Jtt;bgJ?7>2PRzZBMhZ>aAXIW{#_>Kw$jBT3QI+fRQE<KDE3H{F+L_hvAPR8{pm z|Fqe~f-bGoyk$p>^yYQJI7A01aH1T{v5G<9xZqKIRpMAId>+C<1)kA__(Xe8&JOu< z%?&$$&i2gW%u=SUrwQ(wcDD6h8KU$+wHmz{X~LfBZoAWHXVPXPciF6Kh?crua z7ZQ>Dv)s?fO5F?Q4Wvxf!ZK`@ex9V3x@ok{LVaUxL=qQ-Le$_U`V`*Op)UG{;fAf{ zq!(1xYNG|0t#d0)vIhXBeAvLt`TjM(GP%mLyL(y2Y~OJ~>o%yG<-HFH`3jz_QaJ~% zEH*N75dAq~{#Gejm5jL+K3sk>!mFf!El_lb$EMDY=Z=epv9&z;z88-AvQoA>**`jI z#4iokcoXU{e6G9?A$OXPa`LlzxhMBfXzR!QET>S4;8zfATg$d&H3jT)Efmm6f|k)zX7a-y`E7 zM+%0M{*X=wI+5*nBJLY#F8;Q6f#yLs_W zM-ZD0!r8#DXGh$PZhE1;q=6uF6PFALyr5}XSb5F`IX+f19^B;8@24$V)hoE~qs}Dw|HR%`-U+PsT4~Uyk}EMV&crd&_6W zT(_io9+i;W*ULb{yPaO?JaLXwV?C_@O(R_3MD+BZKI>o8vO75a)ZW^)K3=cP!S5dB zQ=w_Hxu%#EwUUHtmDhZ#VxK!PU*jb0BWMqnU-(C~P^0&Q9SzYAzPY9yt#kIN`iG4$ zS%|*@4U>$CHrG*)34OI+i2ag@=(>$dYr4c-EYHt1gnd`5+Z0n}?jPvbW|PtICGIHe zksuLAub!BVma=obX?Z0bhX&mN5aoHg7OgwYg!01THMuz_w~5!Qkeqft8819)Q*NfV zGI~K3N!CL`Q#3PUf4{tDjL^mW4kqh#?ryhoiWcOqIpL488u@ElT0!nH14$qIKV}1a zk3)?~C$NqMu>;gG5-t73#y7&qmu5&O`)%%%&!k=xx@vVDQGKnaS$QeE@9Qq%E|+%h zH}`2K+3#+YsLDLEIh6=`F{FYNfZE=fmGA_SCMXmq;dk-%>@x(9&3BfaO+NeFSZFkA ztMc@e+S#Z1s~sKpKspwhv?tQ&z$|R}A6L)w|LVcz)>cSX?V_JTi#6|r&6m2?(N)qn zN;bSWa8YjPe>(tfiHT$o>2ma*Dx*?`asb$t!l6e&G~GXbHUh^ zscWX)!ru%FkSDF?g63Z7KsCemHbCG2V6m^o#~#)0(c@f4sDWCTLE%vR%H83U=B(SL z=idN`;V+pr9#VvkEyHI-9a}y5u})1Bu@BW9fazTx`&2t9<1e>+}WPrd6+}EO$0KWk$W2yl`Gp9c}`$v$tm) zD$c>tY1XLe!Vwfl#W$l-)ia)8jRq5s@QP4IOb%ngJrwdCs zWAXTUzUN5SF#HHPbJtO0Fs1H$&f{3&vMu+&L+d7w|E_%3aa9k2B&L3wbRN`p>vBu5 z@|%xXR%);=kKF#dS6>EfBaB6I=KC|wFi@;l$N&~FbrRSZ`nW4mRDg9^a86FBlu{o?%`P@ya;;6#lH`{4NTW1F8V+#=g)i zzqqR{T9fESzF=+Y;p*mczOvky;UdpSpzuO#KM;!K6|Tu2<=|#!Yky-=2`>iZPnX?Y zo2=w)LJr1T>~3JIZ(SHQZ3{(5OI5*2Qh9_b;lDcA!}8~7GBJYsZ=f(adUnSp?MsHj zRCE0LYW@538%X6Ns03&fjwkK`g2*ZtGngd3{4UbIA#hC-y>lA0oMEhwLN{+p$0J*X z8Ny9G>*u>&OlyBqdXkmBcW^pPhx&OpGF5B-gW}{8{ujl;Ae5P50idbLJBEAhe)^LMk2&&P!g|#jTxzd55CbI>lA{mynJszp!Gn^km zOmQen2^r4V{D-aX%RZ;5UP`|@Sl<3Q394BuJpOn~4=y|%6e}ECe$61_4mlIG-WyK) z6o(L%k@ts8dxj{QMjP7siRvY4YkR)q`P7!F%7DBWPb+#Gg-eUbEkFS`nxJKoe6gSlKBVZRVii`V*{IP0AH6#_KE1sivUKKkC) zpMR+d()n&Eu{szKb#^c{^J7MjL;TZ=w8@^WGm^iwu-S>Sc)1a$wIHJJK&tMm`9t_7C?Se##zB5Y=u$Wf_4mcb6 z5K`vzyH9eq(_#dbf$ZSsxmXtG#@}(ZMIx*n>W=m}m>H3HFV=t=_HbKi zEIam%FpkulR&}aikU_&J)V|Qo-Ff~GJ7?7wb&v|VBWN-u13{(0_^bxAt@DjM0%|F% zP#s2t66}9SO8T8Nwq|7)+}2<7_%lWoYzGSJb2S;xTQH#F248xPNj#rNy^+>^{A5R7 z2nBGPl&3m!n9c8O(L9wXTbUlDWh{G|^hYSAH`?|tyXS78QnbV20FQ#f8B_e*e!J^v zuc?J6(Rj0Lz_w?IwtuOAvKsb z?i~UqxrfX*DBY*#1f2j!F{iCv& zV>!y2G4lc5%AVmbn%{a-I~tWQGJZxk0A2f|<s-a{Oyq2A0u~3*0z8)MI5}Rle9ymUX$+sz$(G#X#HZT| zZ~34V8kD*EK^<nV&eWG!&626;0{h^WS z8zqqx?fP#8M!yYQ*ChBj&b_iVyrwst96_BNU}&%jvoB$0LxJr0JYEs*>AP*8i!4Dy ze%Nf?`*k}RJ~tgB#>Vro)Io15Kg<~uijHPT(&1Pm`rZHi0GR)3 zMAf@GUry)FcY~*_@n1YLPG{!Yo3GGSp*_zKUEJNqagf{`i*S<-N&M(sx0?mVcRI3a zDt8Ce<*S@&Q+b^99*||U?96F>G0|=XyQT>|JE9Wbij|0t@@hxTKWM?2gugKfUz2~foL4M_;k$D7~`gGYD$SfMm3X69=p0P_Sm zNR&%~z7yPyJ2IU_1EC5-RYFRnB5RY!`n}~NA-}G&trznE{>XVa&)7?- zTkCl|>~bkDubuqRP2;#XdZI1Eu|l}D{0>nXG$&K62SBW&wo<1U6HPEA(pW`2;m4hE=FWac{JSP39lOH@&6t9z3!L1bsC>V zSi5Dv1a|Zu*?saf)^B zwz?k7$xu=KU`$Jt=$l4$x^J{4vjLCvUfJf6>v`=D?ynx2VM+nN}0xyWC7>Pe==F|xBq^#r0h z>G!2^vt7e;Vi*p)^u7V$Rg23Ub?5Uq)3~M6-O;js%GN+}+q3Sw8C*x52j1V+hqzh7 z?dQ$M^Xc^ZJ1iOH{L6VX%2M_oVSV>ou8Xk}jDqvMPuYB>`a=fW7k=GN*)?76?KQYXYFO`j(1;;(UjEf`u|0QhdhqXM|KcN~+d)j- zxG0bW-(&a8zp`CGCrm-0*_GG)I(PcfX1Y7q*wt`ZOIAa_eM_}L_Yq_!5SOKk=FOQ6 z=q&$i?B{!5WF++ocm2GbO*^P{B*_`ed)BR8n7~HH+SiiC(`5(IMTfQvpW3$PTL13D zoXsXrV3e3sz)fwMCDsfZ8hTBtIrqIH_)Q%3SID*Ic0OXNyReu;)R9RqAIsrA^*_io zkQFZ|W&(gXU^@OmFnx~4xMkzR*NT|*`i$7}xn#g&bp8xVr&(zYF-Sl3ATwsOr_a@~ z6tAKd(CWQkzDaWjyChC~`#K$$5%-|In|Vh+_uCwud9*GPDO@)Dj;pz!o{{)$?D%CL zJes>ro4oH{|6Xm!@SwW>9u;c{td|T0aCSfh^$LHNbB@SIpm$`h>YmqU_DaGs9v5-` zU!;cjFPYvrl!=s*mZ9v&K`>k~636KPdF3X&Av&kRs*WTwGdU4ilFNEL7&` zW9}8=NW!0cBeY@vjgG?3kf4d39xQLoazoh{Fa^}Y5cUc~{+p|=Onjq@Yp9T#=(0PyYBV8^~;OqAQj3`*?#+wT~v&ry?x-;k!`CY0q-EfIG3ug zE|1*1#K(0v(R=@EQ1y9b1n2b;e0v^i0(qn{%qdhnOS#GK3>!RG;8|-a@EP?kcM4lN zUHnW3n~khphWsO&{-0dwyvE^+dfE$*nhG?5wTsBKT>Y!skIup)36&smSo6RgQt#B2 zdl=Ex^1oz`wR?-Jh%$I@Z6ueL0hpWKw~)Pby*L5*q}a|^_S;05i+WgIxY@nt6};5q zKb1JZ`)vnxPZbhR9yYR=tfsfruWQHQ|M4M*q|St~+BhXTIKZ52vsCM26-Wq0VO(-bcgL&q(>a*Pvp#l89)ec?Tsu^Vph)e`Va&@ zt?%@8KCm-;xS?D|6zP-|$fK99 zLFv8}+Z_RgI$?Swy2510+_K&eX1TMIq5=#qZ)NdoM4#8Kbmt4?6bp{NC2+k}xK*=0 zJT4*j+f*;wi?;tGweLG+o5k{<(86maoK1(ud?G*V$)*bbfDXGI#kviw!^O*!Xt?d& zMqTQ;^CmSx?8?yXW!1&6KEwZ+R{8!HsmJ>}r6t_2Gw1wR_7FnbMhI1;iEPOWU&^80 zHo2!X=?XQxCaBx#caByPTfL@#&;tK^-1xh0d_Y=;qPyz^*7dD|ngD;T*(rxgpVYw8 zS99-k_cOBR?-bYOC+V!y!v&z)h5BOlZR>=@_ zW0|?#dGXwDM84tSF-G%e^1$9e%Qx>H|7X4r5SIrJfSW5TV5+?`p~_Myrg6Th&q807 zf$uZbF2PmuQmsn7ZuH^#p-*n^vgpfiY{z~57);fHU%fYc>bzqDLjp>gmE{~-FOmKF z0_F&T3Ba7+?XmTp78B6w6pBiA=h6n?;KG?T>y7I-MzS@hGFio9oDn|=!!v$`F|3qp zHa$Z@DwJPU-F|N3 z`znGHIp)4|FKx6rfBmdm_aQ+=Xwvll-@B*~@5tAW-kX;0abD8P)Ij-~`}QTqte)o-hBB?sr?>muhd{4V93jZyphHY8?_DCs;CidkE_(9BGv;w^z$(|;x%4yd~ zT=nmJ@Ll7-Il*`EUIxzeb;>Qgud@AROS-ExbsvL>U80`rt$i|{J;=1exIH^cVK;-DAS+@ul* z%jgJXoXzjWCvgRHW22hET^*qVmwPgZ{KF;W{1BCA=w)PI>4S(lgQ~rPDCUXXg+LY6 zBipCTo}Ga9v)L#oja9Kiqj&?EGzz9OUtjMKBkH@W+qZ5i4H67wMi02xZnHAu$#>I3 z#`b7Fu|3Cozxm9MFoIHW5ep#H7y~%0Dzd-%Yn%JOG+|e%zXMDB3rajeLYh#EWSg@l zdMd}%{k6zAOpI#Rb7n~O+gcs@{exeTH2Q~#{FQd>J6P1;SAstad*Gb9I~93SQ>#A& zD>`&q>LNS%0oZ&}q!i*HuOKx&Z@s%=Q{v2a=*bv_g3^76e_9$hpt}+r+0ncrvKLRgrs2r`fV=O5R=}V+kZH(^fPrC4mpn65mu4*<4kX1*K zGLMxxEw@;$?c6!6UbV@63{L=zD}J!43hXQ#8O(dUE%ESmdIllYu3z2tY>M1O(1rA0 zA16w;|BtG#@QbqDx<&*MDFx}0mS*Ti=?3Ypp}V`J8|en=?#@9{8tFzFsi6lL2EOq* z&pGe!`w!-xYv;M0gUJ=hV5Xeyj8Hq9|Y3;6=-jf&ZWtv@bESOe_2PtXab#Cs+Y+LNz&4(#% zw0S>^+4(^rt+CQ{N57|C|6JvCJE?-dS>*kkE_+ifTRKywRxLO;V^?IW{GRyUr>kWr zC(ZQvMpV6}9z-|uaM*Uu(yF%+~IZZqV?(K z&3b>1Cr!IrS1Pq?=}J73<0zsQ(%aNF6r@@1X5ej2p}l;dvtW12_Zz;*IMOL=)K+0b zp!&%owPMVXudbF6+>_P~A0|=ahOu0Ogx^hW;GWT6#8!p+CA_Y$+9Nseq#Dr~Y*~Bd z=BK(tMW=x|@?!T{GvEM4M*i>Bc8e3TK<_;|k*uSR)tWMu_GJ@0Rw+G}e^;F?w zO~XJm;tSTZis2Ckfq`{P{Xf5V`@i&6Gu+_8!V?b6uY4RdY7lCZ^dGvLh3`tq*K|Mb zn$x(H$!0B6f`{H_L913r76-^BrH3<1xk{9{DoQ&l%HgSKqLkq8%4kdf`MOIG7KM4$ zz`YJi3VjY__^j&b$3eg6WV-k#+|{8?8kbieTXs;0wYrePTGzkbnIhy`A9n(|PZPco z@8<{avB%Mk&>(x#qf94{6>YZOwNyX|Pdi|SeK1xQS_hMfSmSC5>!N}tWa~akT`Hz* zgYA_C05vwRhf~JUo6@NTu9QEW|7ng_{(CcxhX`(PnlC-2puz8mTg5}(9WQCv#8l>$ z6;S6KUK&dFac&Q{&+D!^7BZ}^n?R>{p-iSN(OEJ*fOcg!`wOXI5_1qOWCiA|IJP=CP(qhJ4RF20iU3J|a=X}J2 z*0(0NX6NKorrI7w^VAK3E%-uA6lti*5WSdOlr@X&bu@dY<_4P2~b~Hw? zdUVn{(qK3(g`k5Rk&!)En@n?$v{E&)oz^X4J=cM$6*?cjp`Q+OemF}mn%n4R{mHfK zRsOCgIOWh(Mnp)t8b{#fGrC*l*HSovmbLqZO<(CMNwWjmuKy9i+|eY+p?HeT%~{so zh7|y6EsBaAW}63u71e6sU$^gU71GLxLsw-oqAM3qtB)7B!!&K28Wv2%c~pB^-~KU; z{mIm$&iS9B_07LUt7GGqr+Jl!w#~=pSVH(IX{C22zjBTZ;QCH(2!b0ftJe2f~=NI3Ud zHRO5yFCg&S2n)wNx9(FYqCw~bpVk9gfM9g9D$GqYpyj6F=#Z286xVi@eGIpgv;Jnx(qde#hsMASIunm{UP4^Q&^4cY>6BXr$e(0n_6N*N zdouySwJGtR0v!G%e~FB-=Q0@f^)Pls*z_w-2hheW)!iX#el_{B$(34G23*2-dF{7h zd}e$|NL8!RC5-zv%{{a?l^?x^UNWx0*B&SW6b=?)S{ff)5XTw(e>}%(Nm7_nc zfW%(FW;e^g>O_~+?hB!%Rg>vn=# zbr-!AJe_a91o~MunmEL^NGoS;NLlZcKhZs84=vcx+j<*{Ev$6^5h#u~qqz%kf&Y*x z;rPhTvav78NAuc)axZD(1B(|zNvKt(?^;8o7X8K2SrSHYR z+HY;`Y*1Q+T1)Lq`m8*=8Op^O`8P+Jd1W1%mqJfeOY)!JW}SDSwMIbm=V z==Jnw{nasPmkef&=X=Plige53w^S*f^B_P?>bM^p3N2&|wzV6yI@zFO?3Z}Xb%&q^Jj-;0YJPDHrw5JJr|*j5K7P1y^gF3>9T!kl z{>r$n+DKq@D@ArB7d<8P&S4^!f*M)9az>({*FQ$jU@YziR&fS&|53%wBByil!`ZLl zeiw4p?f6`+f#2K%HAS_d{!y^fw2+RMhuqCN-!43n^^t2fzRM?5nJw{;18BiU6w>dO3{ zfeCgLvRCta9%phZbc}&2C?%d}JTd3HpgD!Vya=Q%o&TzY@Zg_KUB@^V@H=aO(JhHZ zHMpbuXfs~=UNJ966zCPc4XbiLI5V(;De1gy5(GZo;JdHfn$Va(|H9)z7P3emvu6Px?GWNEyJAt(7PE34Y+X} zGNKU;ziWK%tY)6mrbJiu9rEm?1L7}yKbfz?%H{{2%y@rI~*aZ!e z#JuhL>Xr)pZKA@JR-sxdYTN-A%wrVRqPr*kpgC*E)T-^2@YzZY>V$o%R@BG4}?wYbWsi+B?;+nQQoH~2F zU%9BvtQksK@1DLt`TY+?uCIA`Y!2xk{Amq-!`*@y!4S=;8?c>Hgj$ged!3NqZ*q_-fmH?iX&tC^$%1xm$8%1e^>)j_lkcTyhwQAEoF2Y3WfBk1y(C=Z!fzO zyNw`bBv9|IKe!5u`VL*yL3WB*tbILVscSYjH~W2FJZ{+l5RTh2e{$2M=EwS8eb;EY zeDg}qPBL&s3zYbAJ>oJsF({aZnZ_vZ+me^_Edzq#8wd_UD+07H;ioe=YsPBa>+Aq} zdsE{nPGG2!NTnm<^mcO(ZO@~j0=d3Ue<1l6yW0mL5{_k+o!-Iv=MA_}#*^dF<{7O_ zj0tx^(x?-@0Au;+ei^p~Y0nNqm5wJ-gdfkBCk-1v5q9BHPd}O^m%sq#fX#kS6wj>b z%&`x6JBKdfaxHIQYhwhC?CwW$oMYgb@EgoWyujz{m1~{d;-sM5>r7~B%MGOW?vqw6 zxF4c=I2w2~(;NJU=z{t$-J%a8Gyv`G$(lQHcoNKf+dJ+pwcTvVoSx3SoO}^dgwXEy z-qnECw^+m68ol zrxDV8rb}YTSC7` zFPPlngi99W%l(I;@#0^G#+q6e8p5V>K36V+wUBN-rFv;c^kl=D5RQ{=aFjVT&BrXn zMD@>>Cc^W^@OE{Z2-@#WWKp|0^Y-XvBGv^QAj3DAW!d-Q-1MGZb8~j1Ed|MPND3R@ z-68#Ml!Ry|_+C!qPz1qyQwATb=9&}E$qKuZq9ggyWYL(u4)5j##xCq(!W2hwSce+h zmZw5LN(`JD+{^~GYy*+?O1-$H4+OodQ$l`Jec{U=xEN#Vu5eiv`KCUnqVJ3$N|{@6 zw)q#32DO;;soCPg&Pwd2RP305C>wmLy_poui*>SkyU7RgfVPrteJ6P>kp-V?+ZNT^ z^l#$J+EwlU@{XxSHCifo_Kd_D{(I?234RAG0Im06^2+~Du+{))<{Aeh<~r$q;7;PX z9-lI&1a-%8&<#?RT3S~#&qf2>^alS9WBn%bK=wZUsRn{)<*Uxp1v+WrTovr z@c$GbcrfAYJmMEVvx5$9h1SN4+;&klbF6a)u4S{DIU(%K^f?qD4o~A%r3$X zs=)bK5B5KBihrYsr$2bb&NQi|wJU>gQ_SyR>}o!FXb9)!4W5oVe z^Di-U1@fkZ*9Ic{u-<_Mdfyvv;D1ZO24zF2{T;IKZQ$+8WM*5RV;7d zi+fG3`M{N3%8-Kal~3P0albI-q~!5qDdQ<)sS*vwW7(hbrUXA-Cx_%HzPpQ;5^Ap9 z=b{hVCW*wZb_j2cNYx^rt0O!e+i*Rn3w39wm3k~yWiCUGR=&S&)OZje<|$NQj?^Dc zOvJVVBRFFI4zF2KW^M;Nj?Fv!Eqb6--a0WW)VvfmYCs~YBQW=kb0o&jv=+c@S)FUq z`p1=y(f{j8pYB?l6~0A2u6;H8304ZPnKMRGUNz-b{D6B_y}l`qNG7~Hn%*XpHg#h` z-iUwA#I#^69)SM`cS+Cig2C-5YL$^r%0@vlE0Rn$U9sa{Q6zd1? zZQq!D%TPbG_tRPZg>Gc5XV*K%Nq1SBv_sbNiq)8y`ad~f@O@)e%Bg8#M+M}l$Zz=- zXSCO+cmUUvr?RaggNTN}EQVe)Z<7@jH|h`7VJ^S;1?C@Fp(Wu`9LmK7q+dSIXo=i- zh&CZUm;O!qSHEH;u*tWg2LiRVvyXBY{54OTH7ht%<$p0*jXi2i8K-eyFfZT?(&VyI zY?H%fY-xgW%F`e_Mo!*zu=)v$;Obg+3BRTc;f4}z8slbN_p4OwzIwvZ(r<>|*6o!;-X(qGCC_S$yF;1-$jowL6OIu+re^s}{!hWLEU< zakgFgZrd=Judk}!}{h1bRfQWPSQyb7cunRW}C9@0RU%1TRrMD ztK%c$Yzf~V#tR{iAbLy_#@gh>wu`{;xf_gXBQP}y0~#5~dVlzm8a75M@m!UDZs|7d zd}?!n|D`ed_tx?x{!-`xeb#>3>A@I;cg>cdalz!kNXV!C&&IJCrYr-aUtLS}RxO;P zbhTDU7+jp{*gQqcAW-YHgn7X39&1%q1z+4>`AVc|Jp_g-r>!k_f9rufc02^2{0@-a z;aV4qmDqi<{gALC7%PlF&-JMz0PI4hkj>WQ_EsINn|r|WFh09zEn(@&FeqP=8~^N` zLp+UxSr+uG{iOt4PK)`>TER5TU^uJFk6|R>V$6lLX=|k|_9hr8$b&AUI0-~(yo?7_ z4qi|!%(x?yilshVkV(0c{^y{HLg2p|%=Yi$jrY{oWiZmG_rT7HJJG1Y*vmT9BikMH zE$C#!>X#GogxYo}*_RV7As!mZ=|(7VGc%02vgxG|D> zhpFi{7x?lbh1+5zU3!3tzkSBKh%mro{wQ7u3)&92;R-Goi0}BNVAD%6h*0U*Fh7k3 zG?jX#(zoob@_BuLB|qx+7{*tb$B0J_am?+I*{E^x1an`fH1XNfXf*(ab1UDjMRMz1 z&#p=Rm^VAK!18;Hg@s(N&a|ouwAT0)aUU)j;z4jn?#0ttBW5a2+)Wm3O?~zJ;+)g{ z(l|7~X3o{AFwg1?+;oPRQj*7WnU}Vh+hA~q6KOBD1q{KzBzDo<_|Q|Jd9ip@ubI z|0V!+$UIeYTs&iRtJnO{J%L6zoHv7C7U#O;dmieu9M8(lt>#~ay zh67{<@WgGJtJis8rU5Zz;7Xn8*ZERA;DTDI!6InhUs^Sk{Nb*$rAe(@Z+nL`vdBYv zLySZ?g{?qi^w3G*)>ucX9be!`OhL}Z&9k_KmH6RHN>ywX;giPZL{zWM z9u8H}f1ky8U4^<|S00u|1#mkH8b_9`q^PDIBEF{4KE!HjNah=3=VS z!Mb>!f{#97HmsIUiU-X%I-GG+M|#R*ALpoPTZR z-2T;C2+8`dUd|c;98!M;@jxV~VtNVCJjM9xMhfyoXv~tA!qf=3XtbnB>oFfh#Dww1 zY3q{JK(g4NF7XGemli%gZ`G|SGh%ScJ}fv3mjz&FsCgXHMT?)i8J6p-+ct z?N!Q^2ef6N7M8}4M5z}r2iGl>0(V#zMqFz?SZKs46u&M&8qnM6sLl5mMYPyX)bt~zk6}@x!$Zf)s&L=^%p6dRd%UB z=YWxo#xm`7i|vEZw^U~VguSejJN)B|1c}@X<$A}?P@@Z-bqu`9*!O8912cp|HG^OY z8lyO`R`|uH=@Z5+PrK;qCSSz1!q2hcX?C^*?U;yM{JBd@cybBb``%9{nsAp zjBlx`W=+^ns?vA|<;+Evj}Y4{qlG~}!a zArl=cA|a_s;64`8%`UzD0A`ELDoEE&m87u~Dj$V_r>~Z(oZ9GZ6HYBExh(uJb-O(r z8Rtp!=b0!_=8tm`t^#)cPT+kwUplHFB>BHXrNrK05<2dCCD7CFoh$vRaW`FjCRNxV z(l+(2*oZxeW>xh;*(Sn?4;DrEoDjDommqP|ykz#|v-s9!Jx zf^sIZ@X+v4{Jx$j!lmn2V&@`b-!ycKHg*k3_7<#Oaj91% zK(e60sx&~qRw=ax$tpVx7g)2b7B}wAXlC2`huSM00so03BZ!8bPZo{+S{2#c7qy%y zvNhYXXU$=V8n7`@A@-4x8oz$V0J{>(-Iw6quIc!Sw`ubk%RFHF-K)h7R-!NR@4M?U z82>E%q@0G~i>*ZE~(({e4K2Y|krk|YqbC`)=w5Y8o`k5boeMZ_a@ zP$7ZgluYpEcm!8XC`Pjn#;o+zFzs;Rq`UBfd$}Wti_C@GvIc>AqrWy8!CZ0;!7?Cg z;XTv`HU{7NdcHa!6_{C>|HH`<r5j5zjJpuX@~^7K ze>p6URR5?vjAOddN)0Qh&~cISE;pX}Gu_suFqLaG+ELMGhugg$1bUmmDNR^OxOw2(&<`CjSvX4S$eItZn+nsmG7avoNa1!UYM#=V zY?u54=QBe7y7Uhz?z4!SdaOLvN*`Jw`_Z}lg+J;Wo#8HuH{=y7ip?(XjZT;zQW_zk=AATt)NV@6)>gR z>T_aBS5<6au?uRJm~8^O#OBx91D8UXSN}k2dcc1vU0WqaXupAFgVvRi*S^WjTeY^q zcB7v0ML9l|T<}w37PcRB%U;`LEz(+u?_6Ul14Hu+23m$K z(Gl4sKNU2cdSWgpZX7!-#c|5s-!KLAdggf8r%MaclXaEy@tXusO*#D zaf=>RAzcti(n=9E4R7}FxT|66CI)dO_grxmcco7do|4GcabGJ>r#qfzMn(Msp!g>2 zRGGEyRRTTB!V}@*EBcFmm*v*1w#^=j16sA$)0+6*s1^shq9Y$SMS<;%v3{&$i;?jX_kFz z?FP0Rv^9pXvxel2RpPoDr15 z*a7AL|BTrt9&Xer2tARy30t3JX%Q>!x%nw3*_Qh99XN+4Rx3ZcuH0AKI_{_pns=uH zku)#(j5eP_x_T_E?1txRieVYudUl&5xvi%F)(C*)2d|!%d2lf(sYk0;`W2eS3n%O>MrC5wLPN#;%}l9kgL}%W4Wvp#XWvPj`IChP1vcWuV$1b{V1? zsGACg%*Oxy%?>uO z1u(>5ALxLUEjwmgEA#7+eFdF&IahK|?qmVKLIik!)e~cPW;=R>b zg_lW+9k}p9fB^kf@DIN}YE_irA4Y5hYkuk72)~n>YFE!_G6?qpGKhmE?`#utmJIl+ zXvEufOd3uI%^VZgk(%ZTSi6qCVVz*+-B`5XTafo)=(qa$-on@(mo=hlr5h;Outat5 zWEbk>7RWNSj@`o?lBgNw(o7Q4FEf=H(O)aR{y_W2AJ6?Hb2TD4duz9C@iq$esP6$+ zW{y{~!&Gm?DUpeydwAYPK!;dPq~fIuPVShimOaCA-%dit+4l=wlaZ%aH!kNCjV6m} zUOQZoy)G}-PgjE|x-KhPHh>%>1mQ&EV}PZ0a* zj*koJnrs&H*<#u@QLN=@eA9qwVvt&DW15Vyc?%^-Q-%jLn*H;3`_Z8v=9AVi_1M`L zg+GYOIfcI9GsJ*pev2hilAR!|Iv}zI_I2BARX>8r8Qry&vCTjyD!G4$_>m32!cpmF zdC#R+`x0Pqs>Y%LY+rS_JRnE>Jyt91{s~|59OB5_IN`I^?a*kb6e)Vz&sQ=gB-$ul z+J{+xJBTRN{7O;OjqUFn`2@?9V8Wluh^-CFQ%abrrSAdZ8)g<00Kvn-#uUQ?%yl`e z1F#qG+r4bih`MqK3c-B*>ML^67;*Uy;k>%F0WWW` z2EBB{qz#y0+v{vM7(p8}e5S_520gkEa)QgSX0DmQeQax`iN3hkVb_-7Znz{979aQf>(V7d3U(Q!1 zTN`&pUAWvsH{m54EP1t+xd}fJG2$qkrM-g~4jQdU&^5=X;%uC*J?Acx+SH&9##r3n z!MdL(P6wCs0u(O9%1d}peWJ-~8G0jnCN5g66mHHkx@iSF{etuHC>>|A-v6+vy4pAR z=Pd}UJJRfD*hB#%FaDP$|Po{1sZAWp! z(3(0gz5oLLC@xOM02K996Ztnfd4EE%f2LqD_E^CkC!pQwY7(ilhb=9CSVXR{0iA5ebbEn?%U_3D~A)HsM{GIv}u3SV!$ z@hFKhEpLD8_=WGEQ(fQ3!3JSQEa-bY&pf&)EB+3SRg9u3t1c%wa$SYX;@#?6?QE1+ zPh+)w{_k0>bT(CtDL&DHykli9`j3g$PK(vQAPke>2e>Sr4o&shgoe5`%XMJ=$61on zO^@Jl4emjm82t{x(5VPe+hd>1+ucpDe+IS_HR-~A62rp!)5^8?ce3-7PvIhG;{y#3 z88g8wr0@N}aPNmYsN&m`=lO{QibPWmqW_pfTgprN@?1Yoi6k~LNTDz2tBP)vvKHyr zi`sJO?er~oDWPWB)tnp!vguU0Z)Vc)>F0iE4gHDA)Of4kbHvn=j76m|&sL>w*A=GU z@%Wj_4%OsmF7D;Zl%$W802BJi801ybc@6;0dO`r!tP@H}H2+;A|7~e6`1!150gHEw%ldX7W)veEt{M?Zys$pXXKK-Kp zt{#N8!!S3dUY4z%QhFg*$L?NpgWXvp%8AijG;qnri_hd8m7{jIgzwFLSG8y_xX z7-5!dA8-9{u`Y&CiXgz)6e^$wjRWMxZSLm+N%qm9#!Ef`5<(84JvSTC_fwhDY-gH{ zVe{d^O8J+YJ5SD7Be#Brk7fvl?cKc3k;J?&n%6k-5^JJzI-*=;QTys`!JIwmFAift zwF%^ovgs=i2JsK{Jp~g(g<^=99n5#_+Z>IpS5bpwz$_v16g5XH%_FGF+E;G#h4McR z@CC|^lEz~E6?AWg-Sbd2e!PuIKpa1Ci@93c}O14e{~e zPAiv9AcOn18xYi5cxOG`u&d&oy`6=MbZD(Ukb zsG(y(UN*JayLFlm-IMV%x#eHmUL-scV8x0}`HFA5iS%S$s5~AYzM2q?Tdzy@01x$@ z>BzflI3I6iFvaJC(0*614qJ#gi_sa0+{WK18S7=5vy>K4{ZN*>ETL|-pWrgigx|7? z;gWtO99Jlj)WyFv7P+Uj6sob9Xqo-@midA0F%~8Uf}De)1AgVf4fsD z2*E+yRR_?!wwN}L6jd`y+aStMD^9ZtsIx_N&1J3Uf?HU3>qqvtkTY^TU>lkHTgaim z^1wF-k)HD)z|mbm@;s&U}NclMu^;~ zSTxZ-A7RrYU$yG$v6Rxlt7&m;E|u}a-X;JJje6KDftIi0Mckfg9@nYm;`xr48Kx+J z8& zH0jZ-nS9(6`EGAsDtQb9b54>o;((HMRSEMt< znrE|GcHWzxNfWzefCL$kuhafzHh?uT_XKL)p+$v^r-(Fjy^k4i6{j8n2SZewTO+W^`o2zS;DPl(cY73-ji*5~}hA){mR;j)C%Z~9z z#vPe6jBrtel!6k@eJ^I7yi!N4Pu5>E4>Ahzi>-bU?G^9LJd*QLJ{4DNWwUhd z+7Ks_X7>FL@nDJimAJP>0iKJib)vpg5c5MZki~fGU3sEiaT&E@o}{SDd@Up2;kKN9 zk?J$cZ-@4aNVVl*YMLDBR;ffHYsH@}ILN4(zV+$o$wxm#~awk$l(F+|)h(xi^!B2%+3>tUsi)7jk{x*-Y$+*%5D&8O zy+rsey6O{kuFa*5T7_k<)$ZwpOGFWRJS3q3t$$J^J1GI$-=4fBRn%`yBY zm@^B@F(8rcainwXQ8|w&5@{n|eYsWN#dIrCZFA$%_YMezVs&eWCR^XSp|jc0)_a@y zem`(|CpCRwIs#21qJSO<*?qjDGgQ{3W1zV;F=AI@QG3-z(HG#BP z>4=1IW4juX9kxGXV&7AazQwrzJ=$-B%K_j)pb0vk@F)bH77q-)KDGZObbj983jUf)KpczZHTDZ@SV@;aOP@n|AA+@S;cN_A}aLJ-|fV`(Yz z9pzHV;*n2nr0Nq>ir#wnkS6TxW}2t|Gkt#kQiXn>^HkZ<5Oz4BE;%Q@mpai7eX5S| z$=T9;P7L=YiCe0h+YkR}tXZ0A6+_1cUb0C6KfGade47`^OqVDxe4pSpwAn6!X6o0H zvT2pcQv=kO)q1VHT=em6E$%Q_)LCOf=p$ItTT)j#rbh6WA#zLn)Ds|ZSQ$vz(&K?Y zlG`BiIj1sPZKFCo2jo(aL*)HD9Gde9Uuxa3YwP869?E&6+q+~VDra`=iSui!hT0R@ z$ZiCK{$N2ii!bzk8B@1J}Ngpohhv)ocYN}FRI_~43nPv21#lhX|tCaHH)K0KRxRRxw1~l3b@xEwh}*GI0+x73dSR+kKf4 z%7jzz3bqt9Od6==^6y$RFqnE!1$;fHpkW>CGf9&7o$HAIdE{m&{R+)Ng*tMYDTOJ+ zgk?xZHKbt4!wFLgG@#go_2g2+M_I>ap^MtIxNmK z<(7+2|9Nx#*W77rtJ4MRD;lG7Qz0ym6Ho)h(T_DuVrFLH)T(69XTEtxw>-Tc|8m7T z$MsiOnqj~dypWCMaqsE`DZdvq;UFG1o|RFdS)6n+8+496^_d@1j2zL+q|=%+J8_R3 zhC!dAPY3U@x^FLHZNK!6Vl1oyFHS>0zC9lLzF2?8+4_Mx5Vx>3_<@rp}50C&{l#{989o68aw1B_)Y2}k#*eq+-enM8`v`sU`6 zK{l+tbGmsox)B_1C|7E7+*e^E<#_0)QAdnNQKOVT=)_`e-T(9pLnaP|4UAr$ z4KZ!FpzT}Q`FN38-GhD8PlHCxMOD%=k}n`o2n%*3y&~I=6v=l+hsC=!Cz5if(sV#& zdcJ(fvW3&LEv+t}ALg^BuMhr)o3CfJiDgFZ97u(KK^AeG>WY&N6K^pxd}{$(+wk~j z{ zK<#qUUGvVWQEGe9pPrCSljGCT9o>QKLg74<*qxr8v?9^BgELf;7h6Pm=qFuA4!a#! zl&#U7AJ?21ERPb4%Y~E|ZDnKM8;K7yw9Hi85zexmc=+88hCKMBXk5&yy+LA{4vlr)51>60O~ zw``E)-AGEXiV0!nIe6CJbcJJVU}9cuN5rYMV{x++A{{E-a-Q!if5?`^TmR&t(9`YwgB?otUbh+T;XG2eGW08K-z7I z@KS8Or{@Vq^p|?Wx$Kye?K6aDEdfBK)`Ixe?6>Y7u3av3}jp0Uf@c!H!6{PMj0Z*Do%2>-QUk=muu$=BD@OvCLK z!)20K+|E*yzwN=KXq>l~c!ysb4A&pZU;7CUcHvu3LRQ(Sya%w2@27dlV-C2i{QF%| ze0txDmQIcy+Vu_FBK!T|ec093oyFBtuZ%m9f-|9;L#bID{fjpVT{xjHOdd%k54fUS zM!|ZXiQ9X01cFVbHAG^{Z{AC$qBkALPJJ4*9dk3RLaw~PoIa?l@>4}Bx=s4GB1Wdo z;Qw!#>~eX&_~Nd(_|mXJs3C+IVc-Y*~4&!kcB1f=ep&#-QOHTn}QJbuS+FyHhY z?zoTtG0sfZR(y*a*^GM?Zm3!G7_*z2fc>&2@ztov_~2Hz$(J*OslVc{@abilWd)A$*B2gbApcL}s0sLAx4<^C_ch^3|gI{=INm>EuP`OWf zF7t6P7me?E@KKTW>eFjNsirL8@&Rq8KU4cf0J7Xxq{V3UKk6h(l*w z8}*b+9+>^%k`y3kxNo32{N6a1$hgL;AI*7`L2KNsSo4(;U-jM?G%fvknspQ&SG?wR zbmlO2>FG;ZFZRBP+RL#ckA=4AZoLT?A5?@C(29?lcv75R5Q){tAjXjQ6ZUl{^4H40 zBN@;C!(M*CQ^lvC57y?0z+Znj19Tt1c_%K1% zXCE)<-3d$T1gP~cQvzHKL_OHOTB3mNwd)DBhv)1H5?7>FVaP(WxM0>xJ#nwc17(6y4b_RO6pW zSvRLgpgDT7=3qAihNeGhVDFv}nFK>w8Q3G5sqMG?u>aH1ukrlvY4rQ>doKvnHob+k zxV8pSUel}hF!`j0f;>F}k^CY$ed+~Iit_GzYg2eaQVF|#`+dNsN?Cqr<9c)nm!B<0 z^J(yKFY`O1pA=&vma0~sD;s2ePwBNxkBDB$e|r`Xtel@3wY$j8T92$*O*Ye_!YR3% zXVG#r4K2o*An{nz?D3 zwE!)%8NiFU?$AyP*~Z9QQN7*9m1yayWf)S`10b0JA`(_<-rB(tG}vG+5k6wvK`D7mtfd`ClsO0Ik6cNTRL&l$E`oaQ6m4JjiTk z$;#XmH$FvyvNyVftZ!o=|E71+|E2e|b4>6qe}8^TZIP2)N~cxH{Uuj-74EDEl3M36Vik(p7j;Y<7d zlq$!x@*bH)6Qh}RcIj>6&vAG8(Ie>712LOm2$XfrAp2S1FHGr6rzvZ`PAm>Uja5?2 zc8vkjkm_~y_VX{ol@~mZO)Btf^%##KXU-)_mP%w`ImnT}R`i@!*lQjq-b#}Qc8D_0 z!Vp07|B>|;UQvGE8z=~ZfPjKDf^;{Cw9?&O14BtkcMC{&H%LjBGy~Gz-3`(`1Iz$- z{C&KB?^^dyc-MK)-usFDoMWfT(?O4R#ygMpkO5s`ZL&=G^x}OrN_6%JRAE#eR7)xd zkq#nALe%8CSfN#ZOxLHTGufi+c-boxYk z4!0`S@GvLI(&AUz6Y&j?JEzwT~g}!7lT+5jj7AMmVVL`0=%1@$Z!m7x+(FBd~IE_WYd0X`L{R zK%Crx(tkHShP3HaXe*qp_^2kf(&x9yc0n3(-67Y|`ZHC>NneT;KPvyTb`Jx(HrXgs ziCw3N0)1ciM6o%}6cy}lP%D1NHz1-{2S;}uDIuFTWrPyIiEXI0Spc@{5!Y7|Dg=X# z?40(w%Qn#KIGzsgdCo=Ih9r(TPZou54qRO^@;TlN<$QzsJ*%@rKF@=*xUHmINBmPh zEY=B@4VjGQu@^kob;NSlGF_B;x^tVw@h|UQ`THSkSXg7bOdqw1RjDx9 z*{8k4cN(tf3no+rEzcuJJ*ZvzbP$;XkT;apViBJxxl*>9Mw_jwhCk|8d1P&Xj2VM! zTDU!MA;ayC99kZNOfolOFt6*KjOp}?=R(oDN1q?Gd`sIjm2qV-Fhf}Rm$^D7s|ZS8 zghTXf`X|Ra{@$P0fB6_AdnqHkfW=}%-{GXw3opRH_OrVU^r-S&jFR!P^|LCH%5j{! z(|C^Qdo0>H3IGOlUMGp+VXt*{7tGSSy*|_NDhy%qiM9ZU7a=Rn>%>_RS-;A{ed#M( zS!E)hcH7a~p^6JPtR(7L<9V(3k|&LAvEw(!wP|x+O=v9nbNG zZ3w+8ql+aFf+o{~D|lqouX~?mNj2$WPjD>vdQJ|7>9LrnBL62}LU8_-G+rZjso_h# z!KR8_!Rm5jJsqd>29c&&rtoMtlahAH_>BGSQlo%0%Tu3tK@N#})ALieQ&Fq;tHYFNZ*X&}mkb5>CaM9; z@VF7Z3kwRFRYNJ7x9Z<#4cHTd+FaencNAWlt(W!d(xa2#6C4Ed46BJ?^Nz5Z;$*>ZItsd=mk|ay;&bc%`BK`aF z%We3Xtm?a-V62Z8w*cOmGYprv#Lm!~yR#5`!84R@2-M0|C1gqWH4wvebE<(FYTjzk z9VEVI-e;Ml#mxrE_U)5D?WkRNX>xp}xznim$f%n?|KXmpaBNxkCaL_qI3* z$&tf1fDuG=#^AfRyLmx}^tj7gxh@OriM~cv&Cu~y7G{rHuS&I6bn?m3c1~9t@GXSG zzQ#sHE7i$k6#*C}9n6+hNfK#~3N$q2IcfNoZWQ`qIs1W4$#%Md`fQeug&gPq?C#kB-&hN zTo#DGl>&>Hs`e^VCqH_ePk=edu;PDrEh5Tr)RXFnolbu#%j2$utk>~XYj~jcPKE^*p$1}DjhaG2_XtN8A zH&;+sb%#y#@x_~(?52f(z~=}8lZkBa6gzm8BHUPSw!_sJ36Pwtk2vx5j^+>I`Dh&P zG_@kGEfoJV8oO&`aM;(o@_1%+usa70vYyzldnK<370<74ysAhFc70Vt=#!_>FUe9f zQhMf=WAr4G>a$T&zB&{`EV>#vUlx4qX&gLM(5M};>=XOA#?SPe+q#(Qn1*Hep*vf4 z<^M3ek-gLZKqR7F2TU}Q)nx&E1&$xe_a!pme8(v{_AI>Lnic8`K84hlu~JBT3W*dXMX$` zaN{z~Hu3#VetKxWE!`q%vet|hX4PE$t*TR!)XnQcJ< z$tNsn-c~k%$CFo*;yLspZpFT=IKRIx>ZR)nW>EN7 zaRE}}3)r^lU2pnfihMNq1w9zQfpOS>aQttz2y%Fdd$Ei3TNJgBaqnCNlZ|2Nx^gj-+cfBkhBVma^o6HVTagBT`(OEsfAG zS>~B}DuN5C(^tHtk^;ebPK*o81p?BQL{>2;d!+|s(e_tOrooO|`gd8bAz3H}J->3Q z+HTy}&Is8)<0LeM%dF9{7?6@~hpv~I8pO4^7<-fkUc^SC1`%-3OX{+Pv|mP|^lIoJ zBMq2(s6Vr>8oW$>cVRBvQ2Ok)@jYGf(^wW}TIpwM9)BZblel-PPNLwdCbW=bfNg@h z6gr-fkGGahS24@HCD?W$K_Wva94J;=Gd7sR*+38mcOyyohz+KZ=$d<`mjRVr7M@^z zaET%3npEl@<3!j#4aQyZt_FDN_R{kJp1iA36@O2$cQ1SKj2j=T%Hxh9$|7!oVEg-W z&W?n3-LS-py#}l(d=Knp#ciFza*9ST%WnJW4L8*NKTbZY?;j`sB^8AEtDi<^Vt8F^ zkv%tVZdWWJIK|AkT9?hO0h;#EG(_QN`h&iK0E&V>{>ypPi}J$jce`8(09SP=B>Gc) zl!5G{iX*E5(#=OMSv0q)(UVR;uJ`JybNI)VJ=t-p9%s#QKE(yNcmDAS2v85AoK>r@ zu@5Jz>tAuaxgi?y4lW2JxT4|JQ?eMB?zoY&NpI@I5s!^6{M$+rKdL|aU*8=+&?Th2 ziVvG?B~*x)ByDr^^{O?vOOI0bN-5y#6hwJ^fLD&j_0e1gpmJOva`-h3-8cC*6pV4l z`n6Kg;GL?4k^Cb;vVPG6wD5NAEi@xIf;#Jb7=M!n8QWf+7w*`yp za?as&{KZQ`1UYX%DpJ5D>3j--Gi;YIU~QVW_cmCos6}(h_eIt9tX2aKd%_S&rSRD$ z(HdlC&L&&S)_VfVq!ht^s7pl~RA{{nR3d|TO$5go7)#w7zIkaMH&e$r@V6kD{If$e zzCA-w_DL(SAbxwghDX z!k^J;L^zQquHv3XmRxSuFRahgoh>nl%Zd|yMkI@r(F;&3mCOI?jPU)TKl>Bxh!>me zv6f`kA^akFkJw6-#xuo1gzw3Fcb?uyI}h!bDArV=IQ@+ZsZ@ODkVzN!QGCK?ypW~G zDG4J}BehwWEe*!Ut@C2!FLWlA1qmhr(s3%+y7s>$s4qI=F$mD+-ctbiIVeH5ZE{^t zn}2>>H(sh@%OZ0tD!`ksAKh=?J9el%Cir;G>Tik?5JB{5afPDmC}%O>co^VmZaZYm1*XR4gEb^PO8hElo5TcvQa0PbQ(8dq$=WSjcO`UuwZ>b(!^2%U z`J=|mfZ5xMg{o3ep;U`*g8Z8amhhzSvts&wf9sUMKklUBkELjO^RbujfRgcgk{vP0 z)QE}4iYIMSHgpPc*RTcKy6QcRT~WbEJgH6GA`}ewfJmLK8rioso;1dn2Y#3kS0GN~ z@3FyIL*Xxoa7^opm^${ntPGc#uVs|ymV__i~3bXhAj^_s-pAQCDN1(~>QJ z-N)<~pz#7-nw!x+YN*cbLWvhY@0M8=5yfa$LTQ`+=t`T#>lOZ%eCA2V4Zsv#7WFOh z@K066tlqI|f~S3(L)ZkIX`kN)uH<59C4TM21!SN9p4c;fOFy+hN&DTBgrU%C#&zyE zFxMwgLw_fgAtCCOOwB|8Q!@MpT2uxe3WNc;FWXBH1`n?oU2qCLvnKf3cSY??1mwezc8+vzd2`t~`tpulM%YD~F6i zEgtuve1tGPgsUOt&kLFol5+<}O+->z`vwoYn?gg=iZn8|o&2@mG@QlFzwEPn^6ahO z9MBc>ZqHQ7Srv%cW_QaHC+}n!qXLZUida;3Ss+nnJ>QRDTCHL?=K9nq3><8>o0Isb z>*}rLeMa$%W*q=*)1_c<2SJ#Y1EZnTU6Cwrp8RLGh?54_0dbkkHEA@bHC4qxTcDu5^)%u(3bMek&*Hm5;9V84P*4j1~wu2PuB091B~x9w(ZiFnDO687ZPwh^<-x0{{??2|G=Nu=3`|~HG@sn zELzBXAb0Y3qI~)Qa?^dJ;+V^m=lojag=2`tkVutwb<*y=k`ee3`r!>+o+C$ri745+ zk63WVk@4e~LDrn?J0)p!EX_4ZzZ8hTO+m@3MH4QyNShc|y%I0SCK~ z^=5c|j5)igc4uhJ=g$OpT?=Ywdz#lVJPpxcXuww9E;&4r-_THN#sUfIak>r=u2y;T z%i2WfHOB{iO0gs`oCK=XK?BAR)Z8)1;8WhU8j9T`lbN#Q^rMx8Pt4!LE)s)$@2cP;OWYkp2QDp-4o%>Qzqv z4QGl;4?SDNQd+q)C*0*UCfoPwz0KvRn*=2}NUK6uX=$f4)Z$&0&KIuweo+EI+kF<7 zz>`jI%zvB|@3Vh*K<`38*G>lf%!Ez;#dy`T%Tdms+=|qaBd!m@vEN$0i57r~GKjSbf!JNc~&C6lAp-$A!wm^ju=;K-wAOVuW_#L_bp^ zgB4+h?XWU<8*jgpyw*&u$_%Mg9X4(^-ekhqF*P#2ZUM8np5d-CH8`dhXHHxR-wjTU zWsO+gkk6RV4?fktIo*7>)yj$@dJz+dg<*S8BeAQ>6uJf77BF_`%n7=KZ=A2X`v{?#-KL?x!DW9;c5a zwuIaIwm>pfs$TfEkAP>7fws)Y3wx{l_&&hq*x_z6^E;d7tH|Zz9+I+h4T4}}715i^ z?>T=+seQrj*N>uU%Oj@ZhP(##EClu+D$Y1qT~A84vYAJ$;Ex^L<{GyG_s5|x=WOr1 ztP_dST@*Z$m|Ux5drEJAp`&vA&d?U1SST#`vT?r6NcmU1#r%i48@3D(f_`Q}IEyci z9zg>k%nXxXNAAPRwLD(P`9>BJi_kiM3K@!^PCuVpd0=b%U3^;BbB6UtkPF%j4C%vR z&Jy$5ZGRbJ-}jJ5SUN{@%?#))AGkRYStpKJjV>ha8_%vD8Kg>fjBIL~qeHyCB$+f` z8vvFyJmXkS4Zxwhtep7B@iL#;#8_B#;Qsw%B25dvRd`7Rk$&~Gzg zfiQa_AhQ?p6?BVG>#l4;EBJv#MBd{yrQaE)aB1^o4Z49KvRsBE4v_7R$fWFTS}_(v z4&p6&(@iI559ZlkA&@LXRZ)4qfj@dSQ^tpI+jSn2>Fq`h80sO7^y9rqmjrDbR49=n zo!j>2Cl?2yrJ3+mS=#hj)HabH0KXkI1C}P8w=$uv>;lu7oCtP4_+nmg+1q8|t}r>M znFnY0!*Q|u%L{iV$0@^k2C=uxVF#=PJuQ!Js;6`KB`_Z@=mb{;MdciES(pqB&A4i( z*{WGz1BFL*C1FM3s%G}qj|+7TTd4|LN-Rj``Pq`sFSB%6Fjus^W+3NpD&E zB}<`3uhlRqKV(huZuw+I>hU3qJqVR6Jyy2yYzHK4UcmhUBAJt~3w`6D=DcLCw#8V{ zG*0LsY;(bZHM(WCCoXgMqyogBeip=Tn*A{$*25MUxVd+ptz>4lyB|^Qj(MqI z6^wD|kHpMDpy#vUg0@_9GwTeBtzHVWr9HCy^F!IcKb~R2b}od8%C?2YD~VlzAppgoREpS;NW}t zYM=q@2Y!LHlK$cnx_?ATBewb3XCh9H&cq!GH$Mx2L}-tA!VhVghUazcvRaJbh1qq3 zRg8C~y9(^T!i%?f$A2Mg+`^;EnI2}T8_No+_?noq zv8+v7)uMy2uRQc)ZGai}k_j^sPu>?qoBX~N_X-~BdjWdwNrNbO9Xg&WgPiHHxOi8s zKKR!0w6v8;1)-4n`m;nNfWaT3vi)?+^wh)wx&PnAQAIt$`E_|f>`)GicVqAg9V z#^7y-8NAEGS(_GsO{-c%m@+|Z{Lznx_-rM*C$p7sH2pdkRe`?d#85opW^*=?Wl)p$ zupXE*{cCqqfG&+NXbex$pa1@$sdnkJE#Bwy)+3iqo!+Rw{pEi%7Rd$Ja4Bw4Y6zDD z#Lz}CFy)r~P`?mk={Lbf&9QCll8{=Ou4-$`Vt*Cj?-$2(F2Qu-{LX|G-0Wbg=z$uLXE^!2!|av`rHK->f&V~io=&30IW z;@4!|6q}ZeSmkyfz2+RpXgJy!)fhYyfV*_4SvKsGDBifoX#Fw;N78lpno-1FW#Y8r z%s2IHEbro%w+wGVvQud}yrW#!Ff|HT@MK+dYqtwqSjsr^`Pu54^dMQj!idVq_6NE} zUeEQ$ftM46G004<35E*R8<#v~rk-_c1P4pS8jyZpP>kK*x%b7to?rH7=?!2H0VHDC=t$yxul$6gx0AtyHQokNAwioW)e{q2|lS+S3`^3vfyuMue?QuCUQGO14@ z4mX$YJY7)3Px7j6$kGhHD-4Q|^v!e#@Svh*-KY@s6NmxMsBewoOHtjDY zYhRc*TSJBe6TP*g!MXiO*JQ)t-^ST@(`Gz?rV_v759_f^{1Yf5i@aG zsvU_RjQ6PM%K0v|GzUeRZdk9{WlB6^2eJsY!epl|8mpp2ElZGz2$YN0J+ z?huGzhoS0YqKYf0;`C`X?j7jjPHp*xj9%}(N@O{A@pCS@x6IR0bO*l(DbQPM`Px|4 zDn6CgMOs?p3<13hf@Ud8-aL2?8($BVC8b$K?H2*x$gl}27UT(*U48P6m%=~2HLN&K0U&B$ua++^`(y5`qd;Xm7sOty#8)%S&I@*|rz~Bsz zG}aYS$;-#n8w^2wQjWvY;uy1Jdq-2Q158>UAGCOEk!CMhSirOYiT;X1aYM^aQSqsy zc%h9g*+*vyiL{;8!xdb-OP!UU5+9wTp^mRlcSL{cejKrLcA(RzZ}46(KW(4B8x{QLb z(6JzUE4qiU^CraJ5$Pd7RZ2MY(c!`;>v-|>DoM!-D6!E27YF^^QBXS{3a64MpN4|2 z*G^r`eL}+9YZKMc&oF$B!w;HFiF+@s(;YA`nbg}eIVR)!gb+4X;rD!AsA^C@JLTb9 zn(@rwQ;D`RmS~ucP9I9oW+~4x!NlhK)vM^{0_t~nWFIfv1m|uM49PBQNm+jaezc(U z%kYg!IJVq`;W`$ogd5a9Z{*W=cZd(M>CWV#%CQFD9%D_IIc5oOvrpU-Jq5y%N=&PP zb%_~+b#iFbS|?*eVo!F6oLlXLex$#(^zb*1T}&jL9k=W)TU=}X&+fv*L7|JoI-1E~ zYJKr(j!8V+#Qv7cATuI;8cTAK{HxbVgW~FdU2eM^ECCmIA%vSWGoac`eWI#fufk4# zr>q+GJBun-NGW`ZO@sQ7mErIR zCx{6LUGJwe2qcyIZyUk<*G9ZH9$gVIWDGt+0bA$%g9BS)Qacd%-pjDOzjUe5DEI>{ z??ARe(keSn2k|<3U5rc)GY}nIUe>#5)`m(#p1=iKdQIoBYjsTIC zH?9BrbtY}ym!q;r$1fycJ_Cak9dQQBxoaxk=!9biIn1ISaNOO>owuW7n2+?VOFU=U zx#emM$bEoi%gAcloLMs2Ue-Gg@|HPyHe0B$u-K4UeB)~XZCo=ysa*?quNrRcK|in# zwMhGr>!}#=sYS0Lc`hfZz_M}gLXgq7ckP}?IvD4|!{VF{c!0|zLw8w|dkh3`AX{AY$Yq=2 zin7|f;FFht~;v{=FT9wE1nzbHV9I|(`S+SCf`kre=*ii{5bziRam7=oNG{a$CAgaFWw*6m>ENxQ4db^_%T@Mz%imu%r>Kfk5 z$=Nn;`>uz;h(pH-PPzwwRAT!-jl#c2sfh=XlLnUrZ9b{IKFp)L6tj#lg|Mg6Cyvip z`x)2IAUpRg0=vGXo;s24n}g%3&IkC5iUOf=F-6j1)ZvMu0pU-dmu3l^SQseWJ3<(J zPD)QYcC17o1*kU>QaT~0y5O97gL=r;!u-sOH{?!ZW_6AMhp1}STIZe>S690hAk%ri z)nlEA@h|qP)6Na3D4nAQ zS!0?Yewv&q{%X4@8>&10ab=Z)&b@o#XBkK9IIa^AIegG;Ywf%NZt2R%@fg?M2hc9X zfK2jIH7U_@mo#J|F54JSP_Aw0aIbQJGI1|=#0$?=fcDrj1l;B zjwOOWNEL;+_YXzzLE1Y>U8 zR~23Sm(&|R%PytCxbQ+Ag5iJax;yJd{vD{y#RU+G%vj`~48nfc?@u(&T`FxKGl`4* zDe14tMi2K{axVR4P>}vHD6YSb4JtAZPQ4UyoKe|iY1#Am3fTP4um}tQbf5y`h`eT& z-gKv@Jt9ImZzlhklVyQOa;7l0Q1K?TG@a8rDz|sI!fVna7dI*o7z_z^!DiBtg+01k zUiJu&VeHVM{dtL@9PVn_+w;1CqxYO^mf02Fm!iwnk>^9!G0=fT(Q%2 z+0D!nKjOhf4^k}Aa&w+NQuzV#<`av zO8Wxr6z5s!y6+LI&KRqKQLw@y`)s9$Y??2CB}rw9)Z0r10XA@{ z0cI2>0`!vq1ov}RT_t@G#Q4;@HH7d9<`MjtTO3ESOQrpb%%^MMKm&K<(JU-)C(5)S zery*Be>Y$^%CuOvg)9Mk?Mb#8Szvu;fQ&EsGu#Qt2k*Zk%2?ue?E3e-?4uc zXed2|-UTyyxAM>zBN(9Fnz~So4K#%W$H_= z8o%ivl0Q*jlp7~J{{+nONX=jq*>)(~ri0!CUo$N*HNTNCRw<_fR;@sJjvng48AbC& zweJYB&;MKI6^Q;f8{aj_7x;RAsCg}~-nkVU!hxx#K=y9?oL@L`2Wg0!fO%)*gAPHZ zR})nS$`KO{O*>;9LC+`G;VCicckX_KGzm?LsEt1$OCG;mA8n!8uOrv-thL@o;^nk) z=Dx#KU46KKltDKvv>@UH(r$GL6t3ehyJkD90YvNA+< z_6R?`b@(RpW5^%3yx;cxtWe(YQF@<=P(wsZXjx5dIu|RoKS*XGD0-LD-{&z7Lp{AG zsl=ml?ssv_NpCZJM()7;b;e*lJ$X|{E6QTnU7n-$Q?eOKaZwIDYPb7n9g#W>52m24 z#-4xb{j(Ij2&V}F9-^anqI&1=wrkMeD75L~*$u*tj}H>b;8)gQuhJgHQ*a)%%8%ez zj#q<2Ai8@K`%Co?6cHhnHCj=TwveADQ&vx!{dpx1MrsH@s2k*Jy&-o6nH)2J&0Uz1 zdv50@j zuD%d*&ns!w9QWg!h3biP^fATf#1uwq01@4V{M`hniAH5G?RGSW>(Y`(TwBbETC?}* zkg0UO;cn(PkjnX{nvBGny4C=Pg^d3&LhvvJaB(An#S<&58GFa8XsM(^fG1}(&{6$kLKaWX6<@DbioN#*MpQg@bD@MDMs{r>gB$kCXR$P(e4RyaZhl ze1W{>?jf>HsJqj`x-fj=770<$4nG@ks$$VqYi~0i;ZMGroZ^oTb}Na19vvPLv)Q0F zY4^;K`TciJpw55Rm(TE60$;|F_BZ~QUht;}R;^o*I?Hl=Ap8=7On8?QzJ+r#Wv=Bf zOglzay+(rOb(}(3a6?m`im|px4bzytn~DoUO}-D7Fq3x)I6&xR-+La`O`ser4GMd) zdf&A46v|Vx!Yl<26lYmcMukr+lMGF?9=b+&6`42BM^2-DvItdSXuj&XWvTt)FE4D+ z4i*}B2KEQ}$0N%>5JFRz7Lg-r<-BF!kKfR{ZALKnxgVxXojS03B)xYIw^Sm6TkPR_ z;nOMHa-h|99DxAay|qWtBV7WlwO$D-*ZvMrNl%!|#vQY&ED}vK$P1O`mavMa>SyB0 zdLe6qg~`;Cre+1}gOex&XUp(>fvqTjKBk7_VyI4EFqScvXXG@4PTp2U?6t;)*S>A4 zp%@3grgm}P#TNz!7U8Gnn*bq{W2#;^O+0RKB}L+S{J979-?KD@QNTi7H4pErH3Wa= zFM~(2Yf?M)=e=}4lQVxkSV-d+G||cV)}Ye7cxWFxOM{4MyJPdlFE-GlsCOi+9X=jE zsHPPj&(kaZ99v$oK7P)T?=h<4wWkU*$D~RHn+jGQb?`o1ev$C-lffV3|?HdgmV~9eR6t{11uzyjvJj7hGm2nzo95p zm7`%u35nlu8>Z^$(IVWw5~0z^p@45`w`2T*KML|hYr-&0wp956A&qFv>3vTT$l0Tq zZY1*iz!z*ZE$eL$Dk=ShjAo1}TZe#wxUW%(*P=qw9k9CuWAF{HpXEuaM&ibPS8!8% zs7u*ULVtbFr91s&LM7hoaufMJmt>%5t07m}=r!@B&EBR6B1~!Mmc}RlQ?TOic@(nN z8j$|2$5}=}0yACF0i()M3qsd4=$=40?|UG@w2*70C0@+xk<}Q-cZlqV1Ax?<=y)yD$dR19k% z^$pr1BQg%2b6U+S8m9U($P$g zc>SuS{lBwfZ#w!Htw0h12TtQ5+Yt!YWT7x8H>0Ky=`YV2S^~*&js2RAd(0OHO$-eL zXadSP+qSZfsWGWcim4ZJL89AEbZm^nWM(V0Z@H8PshK=Xk_%P=E*0ueoiq(fGgn9tR~v_`x^++3 zMsUeJ|0uPTx{Cmf$Jdo7%EPfWaS zE`_NDrbi56nclV2x1WW-;*kyMO51c&kp(pXU&&eO9y)160(n24&OacrLl0VL`|o<8 zuU@!9zx$<#Q5*xdEUM8Z^?3`(FM#W23hRs332@*b2!lVWVxa*K2BfpA!xk75meBLo zGMNO9Q_ul(flCAa%rEF)VDRU885!Ih;cq&o~+hy#c&UgC$74~ zwT-5V%zU`pzyU<5B3GU~P{0_nlH09Kp&+#uw%ZcF`wU2NZk*4SjdpJV?%V0!1(jRh z3MQ{C1GK2Ar%$drEu2EvJzPt~_nIz&^BWQ}c4dCI6~XOwwqUNH7S66v3DtLY9nk+WXg*}@mY z9!B+bK`G+TW!BRzX%Kl*V*1`vt?vgTyTt{30rn5oarDlaudqa@X7{cLJQ+9nxtU8+ z#(=(wrxZy6@6mVB6z7t5s0`$EvGjXC8pi0C=h>*yv+xRW^jElhk`LO zlW&12QLpD4C}mv{y|i@T)k zmx!0PT!ulbsvjD;$z8l6ndBETR=6Nt_oANFJX z9k#ZBpK7kz+WAAl_?v7knJK=37JSPFNq%lJ>V9P9>wufRU*+t;JetiRH2r=QDu&Oj z#LB9fBkv-3)2XpYs%qlj^?PM69uHIOvdlIbY{bDCns!AI^A>B+(@X9g?9mrjL2ZB>Tj zBh5XbbPcyxiHASGnf(Y)Q2!b_k6gdL;k(BB$%N%ygxjGm9{#Ftmilvvl=+ok$8`X) zVbDahrFK%267w@!NPfs&&ti?kP1fm);e&-8EDN9F!2MBufS{jnt@$O*u)0xq$KM-iiXFBhP7OYK;m2_d0n?usW1$U8h|$4W?I^T{q2U~T!R3i zS~65svo9cys68E?0Bu=>ZXp2(do%kGLAD2t=o z?n}|yzm~F_o{3fHUvPY-Yv`YSaA*i}D2ZdKFO+^q zFc%{I-oW>f?$>$J_~&@?_9prl2%|1(6Dk~E`*7&AbuHEAUmi>q)8e2}n*X%%`0e2) zRt=x+V-R6^-1q`YhgsAvDK_*rw-U83A_l?p_VLX<4)2X+RGG*P)Avd9{fES@h_vV< z8-|CM_if>zW(`vxU>W)T2rsBs)VRMNR$_#GCZt88Db&lIfM!EA>(5HYEAi5tlH)lA zyItbrx` zCM2Y@7-iJO=q1=Na!jho#yQ_RT_lszMQnZI6S-K~?*ES}u?YD`m6W(!JYEpjIu3;> z4?a$97WA)&h!LiQFtnSKT=v&c1NbtX7_=-I?;?7QtzfO!8DE9{cYE?p^_0n_JxuSt z&4btzXbiQ;a8R*_ddTt%qT}scE-Rl8JG_^xt- z_-lOmVQ!P$rR$oD3$qYa2_U{$k_uxqq&65tvRl)8;6$g84h)*TOAr*X^@+L_ROo_E zh`b8v<~?Nx146dh%C{9>21Xs%@<#reaa|h$SY>QwU>f`ax@JyhwN(&=T+aim!k|lo zDuBn$^>&ZpGT?>S2wwcIvz@7z!W*=(`M%V78ud3Mf)$gcC%u_p5`69qN!=^aI}l@Z z(N5fBXt(4&d@sH1=84PZP04kdvzv^rugHRYwn57ouq!y@mvc1~QVoj5)kzlVuiU&L z1;3dagbLjABtldqFLz(bYxFKf4vK`F<0y?^2>l^qyr{lQ>8VqL6U?$*p8Er1a176w zXzdv8ulU)#^S*S4IX7uGZ}btSt^e1f{^zXgGlr{T7VxFg`5@Zs&I%w0;tn}24Pg~) zo|#+4)iCpA^5+Lh2u@J$vNEb=C1L&N1%?5U{Rk~SdF~t%Yy^_t?VS`03?0)nc8*ca zo8Wniw%Lcy?^>FPJdRQEQ3u~+wm~1sf68F%&miB*PU(0!S7f(RhsQy+YqY4jUPZw3 z^`=k|>=xnG?z&ib5))L;CQ=3zNqMAWo1!nw*u(0NHkb_50@o5MVa0!qhUl5TT!i4? zJ%0HL$o~Zo&&|hrVniS>v0bAf&p@(Z@TtH_&PwF85;YNVoiaKs{LJUdh_?QPjG<$o zr-$=|&L?%d!xlcn*L|5|JmNbTunu;~o-3N)<|OB{>>Ff=|9H~|9^!a4&#lQUZT)=i zis3%^lm==insS?eSuUHc>DdBJZ$7lbBCcvZ@EFgnVs*Zvd?;B2y2Lh#d*%i6LX zj+rCRtOp9qzEf7=oD^*-ku+A7kUc947AlX1B8w#&B9>HaHm8ScNPm7}2 z=a(djL#|+ggh6Uy`=6i*D zNwjR#eX)|o6z0RvqL`zpY}E$3N8~?i^Aw)xQ|I;`Em2q82-nTg$fX4@(}efl%E^#k zRtfg$v-*S{%N#!P6RzDv?%f01u8iqd%Oiqb%^<#i8ynHAyB%qyV&LX2!yX;4ga1jn#8z3EY8RocQPBkM(BqDgjaHWiTfq zy_;=a>@!&FJmO>3>W{G#K}#B@mHXRK2Q8oI675pKVQhzqS)Qo{#~OUsFz3xA78+2F zKs&*&^+{`F#_h&izi&0CK;P=OpZb6AJ$?ac!dYS@wGl<GT+Pdoga@tb;X!o3_PxBK z+Mr|A_$b=dTpc%Wy~%}eFl%SAHprokVR6+_Xj;b3Xw&33&t@DUbC;H~%!=`*h7L$4 zr*g(l2FT;1{Nl@wWjSHnkQ2w429F=V>klu*Uxmm><1%#SYKkMW$q%C<2@ihHZgXJ~ zR?F=3qw+Dm56ekxHF)5xGe1p-TA6ZunI$}=CJ!t~pIo|d28P-c8^rdq6+T3h`uMXq@eZwhmeFyM_-gk!4ip_4g-Q~o$t|qN{ z{~gnmLV@l%0KL@Pq2dtp)NEZ^W>Mc8GXEzXZ|e&4ZBz<90ViXLE_~;a`iUNQ z(fOm+{qxa)-A%nZsxbfC_k+mqKaV%wj${?Ed%B_%Ac-F+C(D@fO*(GZjK)N6CiNd~ za`~P7A)7=V4!*Rom^eBfxP((L>SQ-EaVyIco{H=y(Gk^=IjR;Vv^s)aY>G1i;S75B zF$4iT+4UVDYe06e-(w}FsEE7ld1hlk&E4A6EKABTX!u&~gCc{7NW0;s9qVOL&a(xt zFPdkZOyt(%HVi_`Y|rBnf8c0XJ?#EJWW5Df)NS|v4Wb~8G)Q-Mx0G~uGed`Tmr6Gb zjkF*gLwARiAky7P4n5!y&v@V0@4DA|{_kMc`p$WtdmsDQpM#Eou)BHhDw}&dP<3nQ zvD5NaVI3wxMy^@GB!J*hgBZ?Cv6GsmqN3!t$5Uzw$%w&KP}F*4L&%4sksghYIZRDi zr=ts8N)^ztRoB{g#U*xVtZ%+7J7T2vbFxmfZ&Js;`u)>`vS?<2GcQ zgk;;QcPAC>CP&HuwluRcEzPEmGH+PBb~Ugs#w<&doLNx?uTcdg$j){PRDDstA<3oB z>`q-f`bG*|cIV`%1cjb$UW%*x)lmMKv&&&luZ8ov6;+zu<7-AsjFkEZ6D$XWOpzf8fryp?{g0A7L&o zS%3#oKb-9ws#-ezp~9AHO7v(6wPAyx9%Y6Rg8X8giw=dOH@}*{6QJkogjq=+^i(Xm zxUyy|t z1Ul8ghL!PpZqHC*VZ3v%kJ+11;QID*%hIHDuqjqJJ;eaB40p2mKbvWQa^>05IQ(+O zR^k>xEW)xoxqFhrip5s-hM!#z`J=sxB5;+xe_;bBpAa@f_#0+K)4lEzcaFR|iNCmM z;aYO+r=d!k@^iMSkGD$aL72~cpDB`xq;8jBwg`bgCl9rCP}S%!93TAgJWiv`0V7Om zj{NnKHJ9IXK;;#SXgDl{-o@v??`^eP;6OvfP4zKv9W98PC!@J~Hf=7S1gli*VrZsr zvnz-?!iK7{sn*(8)Z(_EANbQ{Nz#O|iySh(7^1@iw9hFz`{gV7ZTGH?N_mJrfu6yj zGdvd);a0}=nRhBEiG@BXwcx|9k9CJ(Zf%{7n7iZ~*rIHGHf*uP=|y_p&H72X=-cFf zv?kJjU#*mL`j0``Dg_9-X7!>IOqaF&q0w0aS`yQWmilCuVX_t%ZpzWU`%g2FstW_m z{2ujd6Mh9&O;i9GfW57ZPOx@|yCTz0^Fy*YdRBEwV6Bm&+S)>R77ZS`nb@z(sn?+1 zKqdCGsilRvbf|%WloaHCOc4vu%&7$P?dYM%XDactvFf**Pgj<{=d(7VydyN|YBz0w zdxTi%IfT>?Xg(?!aEq(5o;Qu55Oz@_mN&=MwiQ|bmr;be*c1I@J`3;52_tLP33@by zV23prnNi+Iug;=J0Bq#vS!1P{$UE>!BkKzGK{hh`#_>(ImHV~f-r`RQQARNOTkvgY zY`5IOuP8Z7nH`cz;O;&FkC>94@9? zJVxN*{uJe5pz^7GMHt832dI;$sG;*+l&ow+5pli9#CN4eCENJ=V@|5a!+~(SWqld^h(_=kXWsg+~RE zwTdsVfrI8#ieSy5SPd=#?@+o<{vZ<6_G)9{bLqochW`_epq08($fB- z{=EP7$xP!1<0-W>;)gZ=i=4lLh-PMx#u#0x0bq%CT}8RP;^iC*a;5OXu#2OFvTxZq ze~-ys<}Bo3;4$TrKYN?UjFSGVVbzUw4l>D}+Po2X-}%Dmt6$1+Wpt)BWjM@dJyW+= z6aH^Qugx15wSTCQQa@`-m43GqdRA7Y&oN=ycEC43WTfFF!=?3);HUlXr^5Wy^SVLZ zVXs5QH;OPz-XiF?`wf%>u~LUxmtV9dVM`k^fR??vN3e3ny*jb{AjkaR_?27l0EPs# ziL3-Ps~WjBA$E)=PNC-)tBpn{~sF!T|sYR)~>5DnpK#GP=!|5ae@~$1t}zDxe$UXmM4PcZA|emw$72f4 zyHT+o{cuWG6z1#0H;Tq+Zv| zNfg%+14KD9uqBtPbf}@?{nKUQ-j{G_g;?W&8_B$HK_mlM2dl1@qlWlB2Nqw}JEP1Z zHaXHP|1t^fwX2L`S&zF#db$S%>1MLsKhhNV(g{LJ-bEMTp+eV@7AOHXfxAd@5(>LW zvUos^F~yZ_D)PrBk)AG3jn;fYh@X1fyqlV4srDh=~Y3oSM< zN@CjdJPOyg@KXqMZ_(FeGl9Sf+*q0u(jIljQ?0!y=xrYSk+&y}4Bj0{wq4xX6O<** zUQH5GMBJI@68b7;O)d&UjJc~%)?bY*e;3xz)oRm$pgxj#XXcH>Eu41wW-)K%mUDHG zM68kMjk~mb>uj9shDi(J^d0y0!SueKp~K%ev=mRR+i}WcUpZ{hbXERj{Gt0!O6j&@ zO8De$XG#SjaIVDj`M;_j?BoBbdcJ3W(+qf4IlJm{S6N|jQ_?b|=dg2H z2Y8ReUt$QtUE=r^ul7miLT>heW=$HNCy$%As^84-a7@TvB%Vjb1(Ndtdm=UUlAnd) z$B$jPPNY47P&s z^tSrPyPZUm4iD%)YE!Znp6dy8X(>y9%5tld%QI z5Wti+n;B1*jGL5U=FtJkIO6|<)Bo~u19`Ee@k=W7Ivd}k7PW0HV8$;Y$tfP9JM$@g z4dH@BuWNaltZHPyPQoHqvHy-AOw*;*!}FGjLHZYBQPLJh+;>mDwb4U{o_6^eZZWl^ zj=?h{vNDzsC0m;sZLOE5eK|4;9cHF0_D-@F`}3meV_L)D)?>z5H@YCxE)rJHAUL@> zXw^iK`^tAnV*s z5oX2XbQ9aW`b$e$K3ERT9Sn$GVzF$GG9Amu!Eb0?q-%alAZlnd-DPgO6Wsenn1v+T z?&&rM3@r8E!6Xqc5{;;F*iqXNU&PKdg2vHlwk?+HzA_j@NGI;j(dHB&`cwZP0U4p1 z70DS1E9rVG`;(&a+E>(u+R8GT-WX8Qs@C|a^z9VNEr87fYLjIxh3bTd>jEOF{PT7s@Hgq92}KK=Xa%u^DWJu7NSaa!QhZF6 zxdcvJTp{>u|1toImwPe#_2-{k=Bu22UniuY36_(KeU~Ak+T=H9nQ~P7j-at?ewc2+ z+`8Rgpdr=A=MKIYcF>_-%9}!V9%JsonZ<(~9A=)0{t>+_2u@W`9 z!|GJztvPg6Bq=sUh+^<*(|~e8UORXSz^)==f=@Z=q+0rYKdiGy6-Y4Op-P5l)(g*XQH10iC)K zAmK5XEv|QK-JsowZoFo%^0Wwtl|i2VOUIH&I`cN?Mkj%Vrqkl7sNbo|F=u0pLMfBB z4w8w<*XXH6+v~<=B;_exu!I4u{hz++U$yVtYc@9!mSc3E_2nwHZXFcjh(_{2 zsQjuuf8abhHPF_Z8dmTPko+A3n_|g9sSWD3A;eIq_)*?|MK}2c4~&iCk0`xt?(pQ< zM>BAC#ZiBU0DQ_fb9LB3yHf`w?T9K>J_Ig=zn2pb3XVJWTDLn5Ki+NAX^@JCk)uCF z`~@}jgfBfCh?xWH`53;AW$&k{Iw{o)GuBi!c8msnt|s&tBDC>t^#P(IoWD55+rZeA zRce*NUoP+F>;{WHi8e(=sE#@67{`@tt7dc(1sAlw3od_fVp+QEPRw?tGysId^I7ShJrT#YHo^2xA3VuHV^?SOD(j@h(bk zxb&j^ZIp|63U&>;$l-fj&p`;!wMV(HlUw7e2GZD?k~DONUMu+%(%hc=Zn^ckA2ENc zmEawGTg$Vrn4OL*jM8Te3u6>5HA9Ts*ElfFHmiMb)z>zuimkVJjp?CrmqtV%b9S#% zkG^I)vIcybnQ{raW~xn_r5vp!(=Ezb&_AObkk-n>HLaSpRHZgnv2**BcCGd8&hkX))Mcu{_%M+Lcwyh^l0m*=B2e2t}C|mk2&{$ehT4%4L>1- zcj8gN{2Gq7{_b2QK^tvPdT@$Gdl8qFSjO+Ne$hCC|IQC_$Dn?~_NwjxQ74?wlp z?R_+zSG?=Fopqzs>WIX;a1=DT64Oh{qP=A&yHov62EXUfxy7*RokU}6kANiQ{=lCBgC2L-JIa8kdl z6MOWBX0cwPzbh2nCJ*859A$p;8%#sUO@hZU=j|nZq;C<|OT+H=H7an{YcVrw1MVY+ zAIF}q6FybWBTkccMRi%j7`8b{dpy@gKY_}y>R%KFacMxa$7looE3E&|lPf0pHzEe{ zcunuUCWYU;jWA6D|u3!Z`eIuDO@@e_w;aETg@l+(V7vyX#85Fgzt9GZ~^Vp{a3-s0@o^M90Jkc?)Jv<)u{`w^}yw#>h z;rGy$Y-<5{{q8#-4R7wYICrcr_(P^@jTMcvn{SBn-!^r{^_jM9imL0-A;eYEaEH?I zF%YsG-xW#y&F{cv49ImaSwtDY{ZzkeMa(KpveV-apQO6@-ikAV0Bngr5#QEqC5aMPZFJpWTpSdiLu0W32gN_w z;+0|u=hmC%o=gkNawG}ub*-|A+OvUKxa(v zzqki9nFYtf+}TG@&eucZ@Zu||dS6x&&k}(PoxP$eWAJExz5cia3EZ}n;@;}F>>3U3 zZSSEoPLSZdeVn z>!LLd6#^82)q2ZeJJ_w^z|Hj`xVpER>6?66GS#$iXehJXo<)3G-K9+-M>lCrfa`HYUTF z2Xi8cL>Bf3f>6G(NfvvZ^pjI83CwCP=6EhMs*x8_>Qz-` z#yMLR{^B=LXo+bp5YwpsNo8_>>{Va7a1qkE_4nb@CGIA0XQNH@vnl_!jWF(!5yW{9 zb#tna2{;pk!nazs6rJ{YYKI=V@sffR9o@$C;aWhBEf!&V?{FSz zklXw8CTnl_(9L{N%-1dowJTsO-=s z6NUA(ip*XqDK;kh3esmwM0Q6MK8loUt|KY(Khs?bTj_}>#mR|eoseLxQM^QW!u1zi zdL@aBJkD{o3Z&q^1XV=`YCMOvOq*KMu2GTzWhp-+tP9@_Wu`Age@i>32 zR;-V$^F*5{-?k^kHzh26-zhxYz*i=6KrrnKPu25UgCqzd-eu%D`?RGyVozDRIqwzM z0j{t36PVE!X>L7UD1*aGT1qaDc7>{OPl9E{wGlIeL@gw#7Yc*SKj&eK^u6TJNuo5c zu1`yK6l`htDzA#BJ2pi>6mWe$QI4okAj~+3Ov)lSb}<5KE(Dn|>f-7Wc;Zjlf@_n| zn=Ia&cRxocJroTJ90Y~2L@1fv+TDt|z2~f2oC`NLxVcWV2_0`!Cwdg9 zBd6UFb@{ldLb}5js$(5Tb4EYsl9f!Z^?1WOq7(JqEZyZ%s|?{6eT$g&2X?z_YrH_d zX1Hux+E#4v#PV}tbhNV7?do9u`Q<=(YO5Ly1C*b>o>(AZplGMPQ7PdH*;#v{HA&1D zicnfz@7dmngb^t%g{+696`??4MPllad9%AT`=mDH!M&XTnFpp@xe|t~HzHZ`Pt0^*06Lq8mH{I%?*_Z634Q-bYbN?%&5qP@sk}F^ zn5p83%|tp?vBp26|JsGNHdwEtB~@maqa62%4v&8t5)DyBMRp8iOEV|?BjdU@eS_y*k>iD2vbW>nN0-4~I7v}%C6CCFb7>tpz8 zDNDVSNB*?p>{0ohGD42n4u30$Qp~3>ovGmqRzy3+l=SW(VeW~l#Ok94J&*R36CJl3 z0bh#t9!^%Bg0Ym#KMh7JRCE>8VqqQpkw9ZX3g30+T2qeTvHYtNgcBU))EuyGty-If zsDG_#(`~dZFw2ZW-{hp(Xgnpqv;qGNrRKriWz#^GgDTn0K;cWR)qK}d$WZ1C_x2=T zhOmy4yMNl>e-lv7C%|x;tBFvs=IylAQd79(;uCyLB%EC6P~I%> zO!`P&v1OR9;15{=bVy705+<0WW757(gNPb6aCkmh5!16u`Eq4$$g-%KB-ajGrc%HB znsUdRj#s7Z`4xuG@@C5CK00=}tCEzl&>dP-l`vO5J0Qi`D!bdSyqQL$2Tjam3L-Z-$1^BpR-!oc+N_q?KDnJU+uR_PO|gQ z#y8u)?sMVZ_2i|(`G$seCD+3cCgPXTxlx15Lf@mP$ z2^i;!UA~_G)7*=S`oqUU~za{@vl?32G=+aMn%zx{sth=J7%zSe{X4g~v&I6?O@KX7{r^^-S<$^Qok( z6AyZ-_t{6(Y>K=T>+nZpHcEu#!0|i6QyXgWy*jI}(k~%`zz;#hHXGWw1{J--7`pPt zCn&rA)iG6d3Y~&-I&S1C^}VrP+Jqx~Y}=Qs>ju;o?4n;Xx8t)T081HegU&C-Yufu` z#~q(vZf*o$(RN!v>!rgk#pEckwdTdo+=`laz$oOpKi54Xbb z-vJcwUpDa#S0F#aR#sG=B9mdoJnw5-S}G;jx6s-F%lh|vpUMYJc8`5P-7wyQP5Lxk zp7pwu{;v83v&&bZHV-G}?Mn4V&wo;N4CpVnTRaWEWD!Iz$R-NxT?}J>M>)@#h(hIb zDRy7_;xvUTdyDF&v!pik6rOY-&S0wlC)7%HsV4NvDnXr8;;1Wx$d_^ zLeH@pG6(;04d&Wh8qpJ;J$CyRzc|D)W*yPK8gnaGWuSSo6l@m1Q>m+G<8KdRb+xs6 zvGxo^pmgrC^ZP(YqM;^R(Tc#na-ueBWZsaqv#PKaWl*nqB-ovvb;YB|3eW_olMtzQ zBKAH%WL;~g@})V3LgP$rX8mbT$0?G*A3wz;(EXAiAPp-m{op~^I9|OzSYVb zhI`LT@VIVEjRhBqk<%gg0Dy8W#@GCIv}WPghf_%B@DAC&_X%C0_QuC;-i-v*fY?@> zSYpeOS;K$68Op!ktYMg_FNk(2>VixK{PJVA6LZ=ToGK?3_hPC(iM^rzstY4TeLdd} zD}Coigi~l2%G@?n`LdAJe)*1sP@8~*xUNw1F0LUN#D8N|}onT_YyPZ9f(HOz<`Pv@6CQWj^ux3<{O33Ph+4+lu{ zCV^#?Hl{`Y)WL2ykY2Pix^%2mm_^&QPlegWVc$VCvPx-G$iM&d@Y{2dWAu(~ep_Zb-M zdpG`cw9ClXFX9-d3Z3#ztq7;ePRUaGuoJZz!zKK|&%)X}@wdrq*|poA%*%C(#s76n zO#SPYm?FMSpm|R!&aWSN8pZQr9>%(TBy#rn?i?f+b%Z(x{=E&uBEkh(UmK;ZMzfKP zHddi%AiH7bSglgV$tWKVLrOkZ0S?R#5SSTg6&SGR1KfuLGEgjMtKhcK%VFbLgCkA4 zBLjyT1$Gp5Ig0$T6!aqx>c=4HOC>L^tl`!{MJ}PX%Z5CC{>j@oh$thIBQ~sq`R*%?YvLv0+E&UlBPZPnv z0+uZJcyjq%SDQ+mA6C2;2Y9@VdA&{P3hpYCUPc5ld?d=>@~_%qE|^o6t5O}J;Cch2 z-ktAgMVdSVDmtYf+1Ld8)f!~9_U=aj;aV(b?}-c9JnEcak)v`y^R*ER7w+-!oc@6o z+lU3$&e#ZFwPvvZ_&H?i3S`*guz>>&Fc>+Tj}%l>Y_JLW*c9k=z#YJbJl}L4Bq-Kh zyJB$GR`p|i4z`zfG5w?F786Wc!j8g>SXR_uV-OZ=9R?WxXLk7M-`SzfU$7V+hRgU& zMXbz;fS)`O2dI1641kjdV!KBt6Q--b=`%>hweg#N%#U(T%hTr)5~6mJZf6rOwT0-W zD;(p#+Phb!Tpn&d6O%!Y{aEa|0wbz-Yd%Lv3wGmU+x2xYAYj@0k(bF54O*@y8PCPY zQyCsvY21lSlta@bHxO_SU~TIZXxl|Nzd{HZuZ%_hjQAE?F}BJhr)4)FCIJ;AdGp-{ z#~7#J`i`2Ko?kN<;}jgQc^?!hwg6{cZy-S>8B>7XyPHM?h^-dBBJqU@r}olDD}@J2 zCxpRWEZ>=<4Y(7w$&iT{qh7?19|xT_95Pdjk6p-?QJ)*ADst(TX>V6XsfLr6bqa)Y zHfnb6@|#xo@qE}Ijku#F=ghu{J_BdotGh+R41yQ}W+2d42CyiiSC~c~R%FOli2dLj zXT#zmgCDVv`AHeKA0WN?kYb$VnvCJckS4frbv{Y)xj)v3MGi+a4Qj5%PHVEE0S(d5 zhez6AQe$r1X_W@W(~cte1Rwmw{k;8ND}dy`5uKd>J3hGPXi)Xh18=jvO_6!VhQ7?D zkx1U^mvsQ%pZs%((^?`}T`qPbxF?{b(H(7Htai@5Kq$&Ua`gzxLQ$7V5QXwtg;f-& z{TQUXYIA5S;_G=S7eDcacTxz=8AxCLO58@NLkh|paL11A`Sw}!wRdH#ccRR^Mwhd4 zNR)sch5`TW>W%nC!$4~3MSz(u9Tx?V;ZIx%!QofnNV@ckpY$=h1VO;LPNhWBlH@N> z0*;_2X>WX=?6pf2M^S+)o(6_}^nHgTWeqV1fMw|89=dB%v#y5~LFFCEFaEH6H?g~^ zoy-3~ORGwkg!2GY71{6XGs1l~dG-s;@pJ-XRJ8YGCP5Q1sBB$2%zbFoYk_YW0I47O zON!TfIUsQ)VCKutUU=7u) zK$S)tflgZIh^2*h&uKC?uk%&OtUl_ydmUoJOD!Yo9Is&QnqtnwrH*2KCC{IhA!0gd zPaW$G3OMV=%ei^jp4i_qHDAXG8Pj>qQA-jkb(v*(OQqGN)O&j7$A}w)l&<5qSOwu6 z*1HN?X`fB={nvih!*5x-OA2H>aag|}^>qsFm@3H_-`tiUZrcr)_@Li?PF;`Hs^NJ9zOP~wYmS|);Q}=~=+h%ZYeF`Pr@1yYFo<7vE-;)M zMU#m-CPT<_GES7pF*i%W!Qb>(8a&NWG-5rZbA`55KXE0kWj{XR*dVAd^8-Muni-qps`n>0_rr1wi25GEm*K(C>ha044qYZ^)geYz8j zq4YcZrz83|KQ@Jn`8jXc|QX~buI`D;M# zxp;SRE;dtfk-i4MLz=tE-lF zj5C}cZ8Ez~2~fglAn$`%us2SrF7zn|D)BuW&=<5493(0}ztD$JC$756412_l=z|tI z15m*5I)O42CTKUhBbVdD7fxk5qkM;48n!B}M=bhmoHPY?ye)~nEBTW(;!DfyQjnRN z4>Mna+d@{gkEx*HGg45ocFe2J5?}TeME*BHD#M+F-jx@ce&CVfX#e$uCO?mZId!C` zCl;dh#kWiX<>V`|8n)iuZRI!?nwvAG5t+;|lZ-eD?(PiM7i zM}pjv%s&rRLyULAhdsjb!D$8ZX&N?5d#QEJq^uw1aaaA@E`^ZKIG$+PNzjuE-kpUE z;p`2#GP)eOCY^~vbXV(hi#hv4Fjvg|0voJslixJ8Bd1D7;Z(YlJ@fSj!?ce{nBS=! zzf&Y_xxSNG5&AW-?LR`X$YxqYTy^wI4EoH?X}@!GojxVp@ZP;TBV1W3xzifi?f6Yh zaM0myyJgoO`Gb7>c%BylziU3s6ztu@b0Cu^c0Z#*Z_F&8MZmUuU2hom$YWFkMCpS4 z$o#a$3~rsIvxc%Cdn*cRR|lliB0#^--a8>2+4SfOw53hl{`d6M68t-eaI&~nI}~nF zl0DVHGQ17>z4Y-cdo2c7Uu5^t8r5e%*_WBBy4$?C7H}7s9(tPTUM@}rlI?%%bbvbS zo}F{8$}=$EP>TZ}|M|U$6r>6MkQ#rF! z-(Ug_6|Vr?am0%LSakaAc!eV+-W{PTCnK9g{~>zn6JrzdEKDBjLsV-EWwiHt#-~P4 zd=ePLG3f&}w0mfHziQXAqY<9rz-xn$S2i1ION;M^=N%eFJ#mez5Rr9>XYjwdZmC=! zv%Y#wS4wf9B}izszZeh!+k({w9OcedlQ@`pdDLCeslO{{CENPge3f6k9X_#B;z+C9 zchyx{yy$EL67EKdpyWKQxz!)yp^7Mcb!E`xy^P1FwPHU}_tJAGdMrTfh6ZW0GNt+0 zT~)B$RbxTS3%J%5{TTa`bOOd(XZ?=3+wVTzY5&!g_KAx%ckZI-<%1J+a%8{8Cd%Ky zXR=Cto5dT<=4m*Y@&8CXvwtNXoz{>;Gc2D-Yb_aY`)8s;9}H1xOGUI%xmRjoOc6|s zKBCX{*Y}?2IVaoD@X*Roo|7WL^ErwL)rQ|^KUMs)L7)RoG6EZP_3n3?fOk;Rvfluj z+{OfraihoGdhU`%F4;A~PD;tiSf)0LkLo2K_wPG)B^C|eXl|G)kKlJn44OBM&mIS0 zTmP!h%e2a}q#u2{iVCLbw}6!QfEv(^d2aVSua@Y&@*d;LSQrJfkQC!HqrsfdlE>sl zq*4HdaxqKOr&)*i((QUl-@GIUJCSj!6z0~(s;}l%gZB^(h&|W9xW^5?9jGtf)Xf}& zh6Cy}v);})LTWzKzAa+U`z~~+Ki1FuOJZ=O_!-eu=M9vw#R>~A@BYgdf7j}j< zqHD(4yz8tUv;F0iFCL~=vs=w@^QE059#hhs!&6T_0Pfv`Nv+;dKDcw%y+s)@IC0?o z0qi3@{->}OP5ig8{=)@xKycv#8943PFO9R3X_54J`-rE#wzM%)8BRw!qjm4tMyO3& z+LP%`f8*ojp}!zf=XSl7La-q`9n^!1oT`9dwL4=JZF&^>s1JG6sJ1^Cvh>}iZ#zZ` z9FktMhT+B{Povy#omZ2Aj6z&%ms!RAuQ5co-x9ARj!-Rp-)6Mc$4O0E!LYDRF+4b(BpnS#r+Lf;-RJLDjI%{Aku&gG>=~jYPs{quDN~;Z0A-7xXe_xuA z6TKmCa|LSUIaIJ@BG{cM1)<)5@ibA!IGqNo7ML){5U8ur3-e#kDBI@k*(dv_u+I3m zuvVu`XfY2ah!aKVedEVz!G1LwNzQGU3`(&|oV~YbdNTM-LWDJJvYsf!#X$JuOnf-f zpZO=COUM2}1^u*q(WU#6g#B^;IyQ+g0UAiognX1o@{!>UJFaHOTWjpv2b^tQeITac z5ik9-Fu3)ccI|oT6(0KMASYpN+7dj!su#(pzv$|T{tW`2?s)o9mCe#pmYySe> z+8sw;O6)dUnJ^#R<^`n&y6gn%DDHB+n;*hE-g(Ei9L2_#0JOvsEh~^wlwaQpU4%nu z5?|b@E1$4|(M2LWBez?Jx5Py#ofa0NJPd}MRDa2*Y3WK#n*m7(p&=StzEf~92`^uM zgV-|=d_D0k>zEY+*b1?)lu+`BMI*YU>%pN64}0X!pL?vk(&s1*=7s7!IY$mR8Chu; zmj!`GG_T@UOa@){LePw>bgN!((R^5@VN{&ZD+TLS5fTQJJdVVAk+4y--KN=h>E^Ag z!PJ}9zj^z4#vxAkphlPdAHO$mbF%_IN3ZJxE2F%nej)CKIz^=Zo>!V z&mLD+e)$EqZg)9}R52)JuU?v{#|O6>hE^UQ@pqBBP{E%)NrcTFlNw=$;YPv7 zuQ64#brJT@7uF#&{>3LR^(1EPh?Dg4M|LPd?JvV}ylF9WV=ky__C94gOo|=O(iB(0 z5)q&B*NQ&Yu;Z$T`7oPp^ZRjQcg23qRf@c9o`NxMRIX4Z>fb={M*5-tZ;t;F@sM&)!(e_T3tCsoET{1#(JPtl@_Ql+Cv!&o}2 z6zSX=u%Z=i{H~&t_i+f)R3CfPcgVksaL>ha%iB|1=bfXEP z$N1I~&677~*&M#h+|~amQ2MOQX-Ru{7#f0pP9@j=$+Al!P5pO^8wSb9vYg6fXMNf;P05ePprb)D_*5}mGC$>`mON;2A%|Ea z+K2*M9}b8GFWk#q9y|3F=mvX|1IMjq{yH_;7bs-L(0>kgCR2>%PWYsdab@EjHRUFL zEhLmL4!{6nR62$l^nN?oSu=V4r12$n14iMlLS$Apft8*Grp1kOKYK?xmSG^b#@Zz& zN@)T5!S25M8|xUp%-c7xaUKSv4XnSccgh>>GEC2*o3zhWx*REziZmQ_$Yphl`O|23I%b(iW}`Kl<*#YX$;0MAN!(}NTvK-f9o5FpS?&I9W-g;Zii*#3(|#f6rx zTU>GYcn>QEzrE=Hv2IxZJv7<_@cTI9#hn*L<+CUux$-ze*?|4DK9M5*EiZn?D_MY^ zpIiMdOSbHX1A<{iwP3NzQRzMOF~y&m1u6OHZbD(%d^#vVEv;t%7o?0^dhU7P$M#*1 zJEl{)CcCaePSW;VIupI4s>YS>rcuZ&VzR(pJ>+!e;)IXf^{fOd%J|+QI9L z*7qTKQbh>vy!*j|92hNJw%*Pr{NX*Cnr|FcptlNHI=9qg3vjxkD2*p9KBD>9*H-$n zgYYEq6z?=4^$R}5XpRDZ-h}DY?mQ&j6sPMsaw!A}yzThWD9y0YCLVKI)OX=k2vd8@()?kHuFuQTDrP_w$;> zedjG_XtMjWB0>tHKGQwow{pdeu;E>aoTp=jbG*)d=;R}A(>j?NDPCR95HZkg-sY;F zP;IF#Qo9L;{vG(=SOM+(tAB+ zJ#;+6bheeafth>Jm!ygLj0W5kwYq1a!*!{6#l@`S@!u}U^Y^F>;pyBkZsfikIqPt5 ziLME*#L3rzd+@&w97{-kcP>gU&|!0`ly$h7HacYiU}GJgmr#lNjB!{(!q{OaI;3Hv z*dGuE=Sd|Z+@xZ;}jYj&eCQL2c(z_+lnAzEJ{E_2NM_4G;FW^xAN9wSBpIktQqJ)X;MI!Z#ua9 zAs+;C?pWc!m;mI|TeYm#o_E2wu;Db$d+d!0?h%OtIcDj}1_rekUG?&-m9Bx!j_bgs z9?wy&Lf762ZAXL46!rgqgkK)RdKT6xU>mn!kP;rf;73Ootv_{AwC$k~>07Byd~85i z#wI|I;&)?W(?7*5O?J`&5{i!umwUo^eLdvAfiRjJ?Tr`x`N5~%{I#EnL=NAU-{=C{ zlV916GI{2p0&2dk!-M?^nfXHSJbT9 z>KNX19sZ%k{X*a7@NsDh;lz0%221%HV8t#Wd1^b2uxAJE_*v9_7Z_i(BydjGl{o8fuUwf(v(ksG9`?B31JJ2%4n zPpV1SzdaJm-^C@YiC_|hoPh7-SCe&Kd#;n-o(L|Bwhp+rl0Y9gG8l97NoM3JgX zn}D@=$m;_o$7Wq>ad|dMUIjk4d?!|#dk_ka8iLOKaT2JC<)A+9A7Eck1mGy{E6?aUg#D57+;4hxlNx-7T++WkKAhz@gv zyOl!j63qa1UM^i#FCip zTupq`Huu^DWAn8{@|39nW47Sfki4P$c6?kL@C9q_k@e2pHIQCO9;pRh4XR$oxD^qKyNf-g*jPBD118$%nO zGy|M?&Fg-R&nLT8@qPQQt^Y}w{rK0M#hAc)I{`;vV>^t0lzGEQFdjz-T}Q`MQ&$EU z;in{mx(_>5kiHKR3@BbOJb()mCj81&%EV0>sf&Y`(6anG&AjCB zGfP{dO@s_1wnIPSvR9Rf{#81LxD#G|Ju%ZM%AyTHR<*Yhsc6EQjZZ-*_Zrbv=}J$O z$yc4OrJ@y*fizhbqIczz$jd3L2B;E*FrO~MAzr079&pe-sLZ8m1W@yK{QgSZ{{MG* z#f10UAo5PiO{r1xNsU*Rgra>p@~Vv{aIgACz{|kci*=7iq}2E`iV-V*&@4%6RDn=l zaON3h*gdhGt5CP;wkt2hBg{@YlX>Pzob%s=AA#n24$EKFo7KWy4>w2dYpt-J9l zq&B~vL{Q2P`02G{k#z~{@|}b5j=WQ5D^7YiPQxTiX-+>F?&Edi&WIWOwKjaaeNu~f zyOvfG!EgUz57v52rt-oQL;A4fK(Z|>s~qQ;u;FoNxrjJ`IUzX4o*Li<)w!$w<50e8 zg1*~H*4ND+6by&fDK=wQ6B%75#RAY7OLttSFkJW0*9kVtLSj}hpyw~{i|S{jf5oOF zDPC)RB0I6K!kvjuJ97P%(Tr(}L0wxnW=B&87pCIC+#RGj9L2ki6p5Lh_BJuo?{5)& z6481e_Ev;8Q?r8=Z@;FXy=CDFd4C=SwzWrl{>guX;EGS4J!Ozf_gTRuFmla+9b1$a_ZuI;omuD|wse`DzEOI1+tf?x2On+UDbSM?u{y>;=< zm!lODZFn1fb4Zf~gf&QRtR0wyEUA*`z2z^=kP3)2F^bK{)QZq%D9!S){v1H$YAdO* z@Nkr+37YDtCCvcPix+ErCdjL)2klIzDhyuN|t&{rx89jX@+7@O#0S1ZXvI3$m3J)`1zyFRP| zb|Qq?ED>_tLw4%5H?Kb|&XFgkzG%tLx2g?=og-iL1e~tT$On5>4SfxC?qq^w)O0y& z8QP(H-xc|=+buJ%B}VmKK3cMM8~x#2xx+PF)n|_cJj2EGp+Fx<9zTg2l(*J9h7*_# z&j84|j6d>pmB#pNb#$31-FZUhnz#zj5NB44STuJ$+C&oxTB0wyd%ED8^z{|8ez3;t zTRqbxvLR&Vx?Hr}nRAmJ>kg=&)!ca>?|hZ>TeyE3Z_@WZ)&>W4 zDsj}yIw>eIc`_TVkvV-}F6`E2^z89U7L7E8r13`w80WkQR=d9lA355a?(u^sTzWd- zmgAJ#c9e-m0GrR-qs8!jlJ_K=u9E~4;P2DqLBc^FOcZZ;2DroPWN;q^`Y&E4)G|p^ zSSG%60}RczCq@sM@?`Cn)K!iljThAHdbzz#h#Js~@7p|XTd5hcX)ddH|5*=Pht2y0 z?M$g999ATPH`(Srlvu{ihp1awgit?I#oqY}_L2>BEd5)DKBJihK1z0>6=Y+D3l9ivM-_)QAAB{~G<_MAo?ejnMfJlYW*w%QhRk-{3M?azARJWP+bv1ca2i9zRANb$;I!h=SBElb z<(R<|0#dt#0}qG@;_AN*etjXVm7X08Af*EeGbQRJ4VEax07w))9LKv|Y-{xMnV3

E^wqMmotJAysxiPXc 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°dqeU?_(Q$F$Eh!u^{@C}g9;pO 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 elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.5.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.5 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2020-03-14 - */ -( function( window ) { -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ( {} ).hasOwnProperty, - arr = [], - pop = arr.pop, - pushNative = arr.push, - push = arr.push, - slice = arr.slice, - - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[ i ] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + - "ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] - // or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + - whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + - "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - return nonHex ? - - // Strip the backslash prefix from a non-hex escape sequence - nonHex : - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + - ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android<4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - - // Can't trust NodeList.length - while ( ( target[ j++ ] = els[ i++ ] ) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - - // Support: IE 8 only - // Exclude object elements - ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - if ( newContext !== context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split( "|" ), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[ i ] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( ( cur = cur.nextSibling ) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return ( name === "input" || name === "button" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = ( elem.ownerDocument || elem ).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, - // Safari 4 - 5 only, Opera <=11.6 - 12.x only - // IE/Edge & older browsers don't support the :scope pseudo-class. - // Support: Safari 6.0 only - // Safari 6.0 supports :scope but it's an alias of :root there. - support.scope = assert( function( el ) { - docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); - return typeof el.querySelectorAll !== "undefined" && - !el.querySelectorAll( ":scope fieldset div" ).length; - } ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert( function( el ) { - el.className = "i"; - return !el.getAttribute( "className" ); - } ); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert( function( el ) { - el.appendChild( document.createComment( "" ) ); - return !el.getElementsByTagName( "*" ).length; - } ); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find[ "TAG" ] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Firefox <=3.6 - 5 only - // Old Firefox doesn't throw on a badly-escaped identifier. - el.querySelectorAll( "\\\f" ); - rbuggyQSA.push( "[\\r\\n\\f]" ); - } ); - - assert( function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll( "[name=d]" ).length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: Opera 10 - 11 only - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll( "*,:x" ); - rbuggyQSA.push( ",.*:" ); - } ); - } - - if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector ) ) ) ) { - - assert( function( el ) { - - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - } ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); - } : - function( a, b ) { - if ( b ) { - while ( ( b = b.parentNode ) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a == document || a.ownerDocument == preferredDoc && - contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b == document || b.ownerDocument == preferredDoc && - contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - return a == document ? -1 : - b == document ? 1 : - /* eslint-enable eqeqeq */ - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( ( cur = cur.parentNode ) ) { - ap.unshift( cur ); - } - cur = b; - while ( ( cur = cur.parentNode ) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[ i ] === bp[ i ] ) { - i++; - } - - return i ? - - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[ i ], bp[ i ] ) : - - // Otherwise nodes in our document sort first - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - ap[ i ] == preferredDoc ? -1 : - bp[ i ] == preferredDoc ? 1 : - /* eslint-enable eqeqeq */ - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || - match[ 5 ] || "" ).replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + - ")" + className + "(" + whitespace + "|$)" ) ) && classCache( - className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - /* eslint-disable max-len */ - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - /* eslint-enable max-len */ - - }; - }, - - "CHILD": function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - "not": markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element (issue #299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - "has": markFunction( function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - } ), - - "contains": markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && - ( !document.hasFocus || document.hasFocus() ) && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return ( nodeName === "input" && !!elem.checked ) || - ( nodeName === "option" && !!elem.selected ); - }, - - "selected": function( elem ) { - - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos[ "empty" ]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo( function() { - return [ 0 ]; - } ), - - "last": createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - "even": createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "odd": createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rcombinators.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || - ( outerCache[ elem.uniqueID ] = {} ); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = uniqueCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( - selector || "*", - context.nodeType ? [ context ] : context, - [] - ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens - .slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( - selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) - ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find[ "ID" ]( token.matches[ 0 ] - .replace( runescape, funescape ), context ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || - context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert( function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute( "href" ) === "#"; -} ) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - } ); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert( function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -} ) ) { - addHandle( "value", function( elem, _name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - } ); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert( function( el ) { - return el.getAttribute( "disabled" ) == null; -} ) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; - } - } ); -} - -return Sizzle; - -} )( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px"; - tr.style.height = "1px"; - trChild.style.height = "9px"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( - dataPriv.get( cur, "events" ) || Object.create( null ) - )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script - if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " -{% endmacro %} \ No newline at end of file diff --git a/_preview/169/cookbook_gallery_subtext.html b/_preview/169/cookbook_gallery_subtext.html deleted file mode 100644 index b3d5bdc..0000000 --- a/_preview/169/cookbook_gallery_subtext.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - - <no title> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - - -
-
- -
- - - - - - - - - - - - - - -
- - -
- -
- On this page -
- -
-
-
-
-
- -
- -

Pythia Cookbooks provide example workflows on more advanced and domain-specific problems developed by the Pythia community. Cookbooks build on top of skills you learn in Pythia Foundations.

-

Cookbooks are created from Jupyter Notebooks that we strive to binderize so each Cookbook can be executed in the cloud with a single click from your browser, but in some instances executing a Cookbook will require running the notebooks locally.

-

Interested in contributing a new Cookbook or contributing to an existing Cookbook? Great! Please see the Project Pythia Cookbook Contributor’s Guide, and consider opening a discussion under the Project Pythia category of the Pangeo Discourse.

- - -
- -
-
-
-
-
- -
-
- - - - - - \ No newline at end of file diff --git a/_preview/169/genindex.html b/_preview/169/genindex.html deleted file mode 100644 index 64e9d8a..0000000 --- a/_preview/169/genindex.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - - - Index - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - - -
-
- -
- - - - - - - - - - - - -
- - -
- -
-
-
-
-
- -
- - -

Index

- -
- -
- - -
- -
-
-
-
-
- -
-
- - - - - - \ No newline at end of file diff --git a/_preview/169/index.html b/_preview/169/index.html deleted file mode 100644 index 2d5c71e..0000000 --- a/_preview/169/index.html +++ /dev/null @@ -1,686 +0,0 @@ - - - - - - - - Cookbooks Gallery - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
-
- -
-
-
-
- - -
-
- -
-
-
- -
-
- - - - - - \ No newline at end of file diff --git a/_preview/169/objects.inv b/_preview/169/objects.inv deleted file mode 100644 index a52bf4b..0000000 --- a/_preview/169/objects.inv +++ /dev/null @@ -1,7 +0,0 @@ -# Sphinx inventory version 2 -# Project: Project Pythia Cookbooks -# Version: -# The remainder of this file is compressed using zlib. -xڅ -0>E9WqDD+oR@8i3Z2-2jd|&-`, -5Le_9>LI~( )yv>R $i YPckp_s'?[5 %ض+,)r ŤB.8b΃phFxDW \ No newline at end of file diff --git a/_preview/169/radar-cookbook/index.html b/_preview/169/radar-cookbook/index.html deleted file mode 100644 index f6f9d56..0000000 --- a/_preview/169/radar-cookbook/index.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - - Redirect notice - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - - -
-
- -
- - - - - - - - - - - - - - -
- - -
- -
-
-
-
-
- -
- -
-

Redirect notice

-

The URL for the Radar Cookbook is now https://projectpythia.org/radar-cookbook/

-
- - -
- -
-
-
-
-
- -
-
- - - - - - \ No newline at end of file diff --git a/_preview/169/search.html b/_preview/169/search.html deleted file mode 100644 index d464790..0000000 --- a/_preview/169/search.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - - Search - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - - -
-
- -
- - - - - - - - - - - - -
- - -
- -
-
-
-
-
- -
- -

Search

- - - - -

- Searching for multiple words only shows matches that contain - all words. -

- - -
- - - -
- - - -
- -
- - -
- -
-
-
-
-
- -
-
- - - - - - \ No newline at end of file diff --git a/_preview/169/searchindex.js b/_preview/169/searchindex.js deleted file mode 100644 index fd8a1db..0000000 --- a/_preview/169/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({docnames:["cookbook_gallery_subtext","index","radar-cookbook/index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["cookbook_gallery_subtext.md","index.md","radar-cookbook/index.md"],objects:{},objnames:{},objtypes:{},terms:{"1":1,"2":1,"5":1,"beaujardi\u00e8r":1,"new":[0,1],A:1,The:[1,2],abernathei:1,access:1,advanc:[0,1],alfonso:1,all:1,amazon:1,an:[0,1],analysi:1,anderson:1,andrew:1,anirban:1,ar:[0,1],arco:1,art:1,assist:1,author:1,avail:1,aw:1,banihirw:1,barletta:1,basemap:1,ben:1,binder:[0,1],bonnland:1,brian:1,browser:[0,1],build:[0,1],camron:1,can:[0,1],cartopi:1,catalog:1,categori:[0,1],cesm:1,cherian:1,christoph:1,clear:1,click:[0,1],climat:1,cloud:[0,1],cmip6:1,cmip:1,collect:1,commun:[0,1],complet:1,consid:[0,1],context:1,contribut:[0,1],contributor:[0,1],convolut:1,cookbook:[0,2],creat:[0,1],crystal:1,dall:1,dask:1,data:1,de:1,deepak:1,demetri:1,demo:1,demonstr:1,descript:1,develop:[0,1],discours:[0,1],discuss:[0,1],domain:[0,1],download:1,drake:1,dupui:1,e:1,each:[0,1],earthdata:1,easili:1,ecosystem:1,engin:1,era:1,esm:1,exampl:[0,1],execut:[0,1],exist:[0,1],explor:1,featur:1,filter:1,ford:1,format:1,foundat:[0,1],from:[0,1],gb:1,geospati:1,geoview:1,gi:1,gib:1,googl:1,great:[0,1],grid:1,grover:1,guid:[0,1],hagen:1,henderson:1,henri:1,how:1,hrrr:1,http:2,huang:1,hvplot:1,imag:1,imageri:1,instanc:[0,1],intak:1,interact:1,interest:[0,1],ipython:1,jame:1,jeff:1,jupyt:[0,1],kerchunk:1,kevin:1,kirk:1,la:1,ladino:1,landsat:1,learn:[0,1],len:1,local:[0,1],machin:1,map:1,markdown:1,martin:1,matplotlib:1,maxwel:1,meant:1,meteorolog:1,michael:1,milind:1,ml:1,model:1,more:[0,1],morlei:1,nasa:1,nbsp:1,need:1,negin:1,network:1,neural:1,norland:1,notebook:[0,1],now:2,numpi:1,oceanographi:1,open:[0,1],option:1,org:2,output:1,owslib:1,packag:1,panel:1,pangeo:[0,1],part:1,pleas:[0,1],problem:[0,1],process:1,project:[0,1],projectpythia:2,provid:[0,1],publicli:1,py:1,pyresampl:1,pythia:[0,1],quick:1,quickli:1,r:1,radar:[1,2],raphael:1,re:1,region:1,requir:[0,1],robert:1,roumi:1,run:[0,1],ryan:1,s3:1,s:[0,1],sampl:1,sampledomain:1,samplepackag:1,satellit:1,scienc:1,scientif:1,scott:1,see:[0,1],serv:1,servic:1,sharma:1,sherman:1,show:1,singl:[0,1],sinha:1,skill:[0,1],small:1,so:[0,1],sobhani:1,softwar:1,some:[0,1],spatial:1,specif:[0,1],strive:[0,1],submit:1,tensorflow:1,thi:1,thoma:1,thumbnail:1,tool:1,top:[0,1],tyle:1,under:[0,1],url:2,us:1,vanderwend:1,variou:1,verd:1,visual:1,wa:1,we:[0,1],weather:1,web:1,west:1,within:1,without:1,work:1,workflow:[0,1],xarrai:1,xbatcher:1,xesmf:1,you:[0,1],your:[0,1],zachari:1,zarr:1},titles:["<no title>","Cookbooks Gallery","Redirect notice"],titleterms:{cookbook:1,galleri:1,notic:2,redirect:2}}) \ No newline at end of file