From da44c58066b9ab2d5202781f70c75bb6feb6084c Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 15 Apr 2024 15:30:51 +0000 Subject: [PATCH] Deploy GitHub Pages --- .nojekyll | 0 AUTHORS.html | 430 ++++++ CHANGELOG.html | 460 ++++++ README-copy.html | 638 ++++++++ _autosummary/torchsurv.loss.cox.html | 553 +++++++ _autosummary/torchsurv.loss.momentum.html | 624 ++++++++ _autosummary/torchsurv.loss.weibull.html | 680 +++++++++ _autosummary/torchsurv.metrics.auc.html | 838 ++++++++++ .../torchsurv.metrics.brier_score.html | 807 ++++++++++ _autosummary/torchsurv.metrics.cindex.html | 765 ++++++++++ _autosummary/torchsurv.stats.ipcw.html | 502 ++++++ .../torchsurv.stats.kaplan_meier.html | 584 +++++++ _images/benchmark_auc.png | Bin 0 -> 36103 bytes _images/benchmark_brier_score.png | Bin 0 -> 35803 bytes _images/benchmark_cox.png | Bin 0 -> 90190 bytes _images/benchmark_harrell_cindex.png | Bin 0 -> 15530 bytes _images/benchmark_uno_cindex.png | Bin 0 -> 16950 bytes _images/benchmark_weibull.png | Bin 0 -> 77086 bytes _images/notebooks_introduction_19_0.png | Bin 0 -> 55282 bytes _images/notebooks_introduction_38_0.png | Bin 0 -> 25240 bytes _images/notebooks_momentum_9_0.png | Bin 0 -> 45569 bytes _images/table_python_benchmark.png | Bin 0 -> 50710 bytes _images/table_python_benchmark_legend.png | Bin 0 -> 22636 bytes _sources/AUTHORS.md | 7 + _sources/CHANGELOG.md | 15 + _sources/README-copy.md | 214 +++ _sources/_autosummary/torchsurv.loss.cox.rst | 29 + .../_autosummary/torchsurv.loss.momentum.rst | 29 + .../_autosummary/torchsurv.loss.weibull.rst | 32 + .../_autosummary/torchsurv.metrics.auc.rst | 29 + .../torchsurv.metrics.brier_score.rst | 29 + .../_autosummary/torchsurv.metrics.cindex.rst | 29 + .../_autosummary/torchsurv.stats.ipcw.rst | 29 + .../torchsurv.stats.kaplan_meier.rst | 29 + _sources/benchmarks.rst | 2 + _sources/devnotes.md | 102 ++ _sources/index.rst | 37 + _sources/loss.rst | 9 + _sources/metrics.rst | 9 + _sources/notebooks/introduction.ipynb | 1170 ++++++++++++++ _sources/notebooks/momentum.ipynb | 567 +++++++ _sources/stats.rst | 8 + _static/basic.css | 925 +++++++++++ _static/doctools.js | 156 ++ _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/images/logo_binder.svg | 19 + _static/images/logo_colab.png | Bin 0 -> 7601 bytes _static/images/logo_deepnote.svg | 1 + _static/images/logo_jupyterhub.svg | 1 + _static/language_data.js | 199 +++ _static/locales/ar/LC_MESSAGES/booktheme.mo | Bin 0 -> 1541 bytes _static/locales/ar/LC_MESSAGES/booktheme.po | 75 + _static/locales/bg/LC_MESSAGES/booktheme.mo | Bin 0 -> 1708 bytes _static/locales/bg/LC_MESSAGES/booktheme.po | 75 + _static/locales/bn/LC_MESSAGES/booktheme.mo | Bin 0 -> 1646 bytes _static/locales/bn/LC_MESSAGES/booktheme.po | 63 + _static/locales/ca/LC_MESSAGES/booktheme.mo | Bin 0 -> 1246 bytes _static/locales/ca/LC_MESSAGES/booktheme.po | 66 + _static/locales/cs/LC_MESSAGES/booktheme.mo | Bin 0 -> 1405 bytes _static/locales/cs/LC_MESSAGES/booktheme.po | 75 + _static/locales/da/LC_MESSAGES/booktheme.mo | Bin 0 -> 1304 bytes _static/locales/da/LC_MESSAGES/booktheme.po | 75 + _static/locales/de/LC_MESSAGES/booktheme.mo | Bin 0 -> 1388 bytes _static/locales/de/LC_MESSAGES/booktheme.po | 75 + _static/locales/el/LC_MESSAGES/booktheme.mo | Bin 0 -> 1722 bytes _static/locales/el/LC_MESSAGES/booktheme.po | 75 + _static/locales/eo/LC_MESSAGES/booktheme.mo | Bin 0 -> 1337 bytes _static/locales/eo/LC_MESSAGES/booktheme.po | 75 + _static/locales/es/LC_MESSAGES/booktheme.mo | Bin 0 -> 1396 bytes _static/locales/es/LC_MESSAGES/booktheme.po | 75 + _static/locales/et/LC_MESSAGES/booktheme.mo | Bin 0 -> 1341 bytes _static/locales/et/LC_MESSAGES/booktheme.po | 75 + _static/locales/fi/LC_MESSAGES/booktheme.mo | Bin 0 -> 1368 bytes _static/locales/fi/LC_MESSAGES/booktheme.po | 75 + _static/locales/fr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1412 bytes _static/locales/fr/LC_MESSAGES/booktheme.po | 75 + _static/locales/hr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1402 bytes _static/locales/hr/LC_MESSAGES/booktheme.po | 75 + _static/locales/id/LC_MESSAGES/booktheme.mo | Bin 0 -> 1323 bytes _static/locales/id/LC_MESSAGES/booktheme.po | 75 + _static/locales/it/LC_MESSAGES/booktheme.mo | Bin 0 -> 1403 bytes _static/locales/it/LC_MESSAGES/booktheme.po | 75 + _static/locales/iw/LC_MESSAGES/booktheme.mo | Bin 0 -> 1445 bytes _static/locales/iw/LC_MESSAGES/booktheme.po | 75 + _static/locales/ja/LC_MESSAGES/booktheme.mo | Bin 0 -> 1471 bytes _static/locales/ja/LC_MESSAGES/booktheme.po | 75 + _static/locales/ko/LC_MESSAGES/booktheme.mo | Bin 0 -> 1375 bytes _static/locales/ko/LC_MESSAGES/booktheme.po | 75 + _static/locales/lt/LC_MESSAGES/booktheme.mo | Bin 0 -> 1413 bytes _static/locales/lt/LC_MESSAGES/booktheme.po | 75 + _static/locales/lv/LC_MESSAGES/booktheme.mo | Bin 0 -> 1404 bytes _static/locales/lv/LC_MESSAGES/booktheme.po | 75 + _static/locales/ml/LC_MESSAGES/booktheme.mo | Bin 0 -> 1883 bytes _static/locales/ml/LC_MESSAGES/booktheme.po | 66 + _static/locales/mr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1674 bytes _static/locales/mr/LC_MESSAGES/booktheme.po | 66 + _static/locales/ms/LC_MESSAGES/booktheme.mo | Bin 0 -> 1213 bytes _static/locales/ms/LC_MESSAGES/booktheme.po | 66 + _static/locales/nl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1356 bytes _static/locales/nl/LC_MESSAGES/booktheme.po | 75 + _static/locales/no/LC_MESSAGES/booktheme.mo | Bin 0 -> 1317 bytes _static/locales/no/LC_MESSAGES/booktheme.po | 75 + _static/locales/pl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1371 bytes _static/locales/pl/LC_MESSAGES/booktheme.po | 75 + _static/locales/pt/LC_MESSAGES/booktheme.mo | Bin 0 -> 1364 bytes _static/locales/pt/LC_MESSAGES/booktheme.po | 75 + _static/locales/ro/LC_MESSAGES/booktheme.mo | Bin 0 -> 1390 bytes _static/locales/ro/LC_MESSAGES/booktheme.po | 75 + _static/locales/ru/LC_MESSAGES/booktheme.mo | Bin 0 -> 1722 bytes _static/locales/ru/LC_MESSAGES/booktheme.po | 75 + _static/locales/sk/LC_MESSAGES/booktheme.mo | Bin 0 -> 1393 bytes _static/locales/sk/LC_MESSAGES/booktheme.po | 75 + _static/locales/sl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1374 bytes _static/locales/sl/LC_MESSAGES/booktheme.po | 75 + _static/locales/sr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1679 bytes _static/locales/sr/LC_MESSAGES/booktheme.po | 75 + _static/locales/sv/LC_MESSAGES/booktheme.mo | Bin 0 -> 1365 bytes _static/locales/sv/LC_MESSAGES/booktheme.po | 75 + _static/locales/ta/LC_MESSAGES/booktheme.mo | Bin 0 -> 1928 bytes _static/locales/ta/LC_MESSAGES/booktheme.po | 66 + _static/locales/te/LC_MESSAGES/booktheme.mo | Bin 0 -> 1806 bytes _static/locales/te/LC_MESSAGES/booktheme.po | 66 + _static/locales/tg/LC_MESSAGES/booktheme.mo | Bin 0 -> 1628 bytes _static/locales/tg/LC_MESSAGES/booktheme.po | 75 + _static/locales/th/LC_MESSAGES/booktheme.mo | Bin 0 -> 1766 bytes _static/locales/th/LC_MESSAGES/booktheme.po | 75 + _static/locales/tl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1273 bytes _static/locales/tl/LC_MESSAGES/booktheme.po | 66 + _static/locales/tr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1373 bytes _static/locales/tr/LC_MESSAGES/booktheme.po | 75 + _static/locales/uk/LC_MESSAGES/booktheme.mo | Bin 0 -> 1681 bytes _static/locales/uk/LC_MESSAGES/booktheme.po | 75 + _static/locales/ur/LC_MESSAGES/booktheme.mo | Bin 0 -> 1462 bytes _static/locales/ur/LC_MESSAGES/booktheme.po | 66 + _static/locales/vi/LC_MESSAGES/booktheme.mo | Bin 0 -> 1431 bytes _static/locales/vi/LC_MESSAGES/booktheme.po | 75 + .../locales/zh_CN/LC_MESSAGES/booktheme.mo | Bin 0 -> 1310 bytes .../locales/zh_CN/LC_MESSAGES/booktheme.po | 75 + .../locales/zh_TW/LC_MESSAGES/booktheme.mo | Bin 0 -> 1341 bytes .../locales/zh_TW/LC_MESSAGES/booktheme.po | 75 + _static/logo_firecamp.png | Bin 0 -> 105250 bytes _static/minus.png | Bin 0 -> 90 bytes _static/nbsphinx-broken-thumbnail.svg | 9 + _static/nbsphinx-code-cells.css | 259 ++++ _static/nbsphinx-gallery.css | 31 + _static/nbsphinx-no-thumbnail.svg | 9 + _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 152 ++ _static/sbt-webpack-macros.html | 11 + _static/scripts/bootstrap.js | 3 + _static/scripts/bootstrap.js.LICENSE.txt | 5 + _static/scripts/bootstrap.js.map | 1 + _static/scripts/pydata-sphinx-theme.js | 2 + _static/scripts/pydata-sphinx-theme.js.map | 1 + _static/scripts/sphinx-book-theme.js | 2 + _static/scripts/sphinx-book-theme.js.map | 1 + _static/searchtools.js | 574 +++++++ _static/sphinx_highlight.js | 154 ++ _static/styles/bootstrap.css | 6 + _static/styles/bootstrap.css.map | 1 + _static/styles/pydata-sphinx-theme.css | 2 + _static/styles/pydata-sphinx-theme.css.map | 1 + _static/styles/sphinx-book-theme.css | 8 + _static/styles/theme.css | 2 + _static/vendor/fontawesome/6.5.1/LICENSE.txt | 165 ++ .../vendor/fontawesome/6.5.1/css/all.min.css | 5 + .../vendor/fontawesome/6.5.1/js/all.min.js | 2 + .../6.5.1/js/all.min.js.LICENSE.txt | 5 + .../6.5.1/webfonts/fa-brands-400.ttf | Bin 0 -> 207972 bytes .../6.5.1/webfonts/fa-brands-400.woff2 | Bin 0 -> 117372 bytes .../6.5.1/webfonts/fa-regular-400.ttf | Bin 0 -> 68004 bytes .../6.5.1/webfonts/fa-regular-400.woff2 | Bin 0 -> 25452 bytes .../6.5.1/webfonts/fa-solid-900.ttf | Bin 0 -> 419720 bytes .../6.5.1/webfonts/fa-solid-900.woff2 | Bin 0 -> 156496 bytes .../6.5.1/webfonts/fa-v4compatibility.ttf | Bin 0 -> 10832 bytes .../6.5.1/webfonts/fa-v4compatibility.woff2 | Bin 0 -> 4792 bytes _static/webpack-macros.html | 31 + benchmarks.html | 562 +++++++ devnotes.html | 535 +++++++ genindex.html | 631 ++++++++ index.html | 738 +++++++++ loss.html | 437 ++++++ metrics.html | 437 ++++++ notebooks/introduction.html | 1349 +++++++++++++++++ notebooks/introduction.ipynb | 1170 ++++++++++++++ notebooks/momentum.html | 913 +++++++++++ notebooks/momentum.ipynb | 567 +++++++ objects.inv | Bin 0 -> 3179 bytes py-modindex.html | 415 +++++ search.html | 372 +++++ searchindex.js | 1 + stats.html | 434 ++++++ 193 files changed, 23864 insertions(+) create mode 100644 .nojekyll create mode 100644 AUTHORS.html create mode 100644 CHANGELOG.html create mode 100644 README-copy.html create mode 100644 _autosummary/torchsurv.loss.cox.html create mode 100644 _autosummary/torchsurv.loss.momentum.html create mode 100644 _autosummary/torchsurv.loss.weibull.html create mode 100644 _autosummary/torchsurv.metrics.auc.html create mode 100644 _autosummary/torchsurv.metrics.brier_score.html create mode 100644 _autosummary/torchsurv.metrics.cindex.html create mode 100644 _autosummary/torchsurv.stats.ipcw.html create mode 100644 _autosummary/torchsurv.stats.kaplan_meier.html create mode 100644 _images/benchmark_auc.png create mode 100644 _images/benchmark_brier_score.png create mode 100644 _images/benchmark_cox.png create mode 100644 _images/benchmark_harrell_cindex.png create mode 100644 _images/benchmark_uno_cindex.png create mode 100644 _images/benchmark_weibull.png create mode 100644 _images/notebooks_introduction_19_0.png create mode 100644 _images/notebooks_introduction_38_0.png create mode 100644 _images/notebooks_momentum_9_0.png create mode 100644 _images/table_python_benchmark.png create mode 100644 _images/table_python_benchmark_legend.png create mode 100644 _sources/AUTHORS.md create mode 100644 _sources/CHANGELOG.md create mode 100644 _sources/README-copy.md create mode 100644 _sources/_autosummary/torchsurv.loss.cox.rst create mode 100644 _sources/_autosummary/torchsurv.loss.momentum.rst create mode 100644 _sources/_autosummary/torchsurv.loss.weibull.rst create mode 100644 _sources/_autosummary/torchsurv.metrics.auc.rst create mode 100644 _sources/_autosummary/torchsurv.metrics.brier_score.rst create mode 100644 _sources/_autosummary/torchsurv.metrics.cindex.rst create mode 100644 _sources/_autosummary/torchsurv.stats.ipcw.rst create mode 100644 _sources/_autosummary/torchsurv.stats.kaplan_meier.rst create mode 100644 _sources/benchmarks.rst create mode 100644 _sources/devnotes.md create mode 100644 _sources/index.rst create mode 100644 _sources/loss.rst create mode 100644 _sources/metrics.rst create mode 100644 _sources/notebooks/introduction.ipynb create mode 100644 _sources/notebooks/momentum.ipynb create mode 100644 _sources/stats.rst create mode 100644 _static/basic.css create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/images/logo_binder.svg create mode 100644 _static/images/logo_colab.png create mode 100644 _static/images/logo_deepnote.svg create mode 100644 _static/images/logo_jupyterhub.svg create mode 100644 _static/language_data.js create mode 100644 _static/locales/ar/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ar/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/bg/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/bg/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/bn/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/bn/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ca/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ca/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/cs/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/cs/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/da/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/da/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/de/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/de/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/el/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/el/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/eo/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/eo/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/es/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/es/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/et/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/et/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/fi/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/fi/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/fr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/fr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/hr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/hr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/id/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/id/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/it/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/it/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/iw/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/iw/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ja/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ja/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ko/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ko/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/lt/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/lt/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/lv/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/lv/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ml/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ml/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/mr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/mr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ms/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ms/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/nl/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/nl/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/no/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/no/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/pl/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/pl/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/pt/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/pt/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ro/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ro/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ru/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ru/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/sk/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/sk/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/sl/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/sl/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/sr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/sr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/sv/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/sv/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ta/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ta/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/te/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/te/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/tg/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/tg/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/th/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/th/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/tl/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/tl/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/tr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/tr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/uk/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/uk/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ur/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ur/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/vi/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/vi/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/zh_CN/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/zh_CN/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/zh_TW/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/zh_TW/LC_MESSAGES/booktheme.po create mode 100644 _static/logo_firecamp.png create mode 100644 _static/minus.png create mode 100644 _static/nbsphinx-broken-thumbnail.svg create mode 100644 _static/nbsphinx-code-cells.css create mode 100644 _static/nbsphinx-gallery.css create mode 100644 _static/nbsphinx-no-thumbnail.svg create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/sbt-webpack-macros.html create mode 100644 _static/scripts/bootstrap.js create mode 100644 _static/scripts/bootstrap.js.LICENSE.txt create mode 100644 _static/scripts/bootstrap.js.map create mode 100644 _static/scripts/pydata-sphinx-theme.js create mode 100644 _static/scripts/pydata-sphinx-theme.js.map create mode 100644 _static/scripts/sphinx-book-theme.js create mode 100644 _static/scripts/sphinx-book-theme.js.map create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/styles/bootstrap.css create mode 100644 _static/styles/bootstrap.css.map create mode 100644 _static/styles/pydata-sphinx-theme.css create mode 100644 _static/styles/pydata-sphinx-theme.css.map create mode 100644 _static/styles/sphinx-book-theme.css create mode 100644 _static/styles/theme.css create mode 100644 _static/vendor/fontawesome/6.5.1/LICENSE.txt create mode 100644 _static/vendor/fontawesome/6.5.1/css/all.min.css create mode 100644 _static/vendor/fontawesome/6.5.1/js/all.min.js create mode 100644 _static/vendor/fontawesome/6.5.1/js/all.min.js.LICENSE.txt create mode 100644 _static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.ttf create mode 100644 _static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2 create mode 100644 _static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.ttf create mode 100644 _static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2 create mode 100644 _static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.ttf create mode 100644 _static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2 create mode 100644 _static/vendor/fontawesome/6.5.1/webfonts/fa-v4compatibility.ttf create mode 100644 _static/vendor/fontawesome/6.5.1/webfonts/fa-v4compatibility.woff2 create mode 100644 _static/webpack-macros.html create mode 100644 benchmarks.html create mode 100644 devnotes.html create mode 100644 genindex.html create mode 100644 index.html create mode 100644 loss.html create mode 100644 metrics.html create mode 100644 notebooks/introduction.html create mode 100644 notebooks/introduction.ipynb create mode 100644 notebooks/momentum.html create mode 100644 notebooks/momentum.ipynb create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js create mode 100644 stats.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/AUTHORS.html b/AUTHORS.html new file mode 100644 index 0000000..3c0a1c8 --- /dev/null +++ b/AUTHORS.html @@ -0,0 +1,430 @@ + + + + + + + + + + + Contributors — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

Contributors

+ +
+
+ +
+
+
+ + + + + + + + + + + + + +
+ + + +
+ + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/CHANGELOG.html b/CHANGELOG.html new file mode 100644 index 0000000..630981e --- /dev/null +++ b/CHANGELOG.html @@ -0,0 +1,460 @@ + + + + + + + + + + + Change log — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

Change log

+ +
+
+ +
+

Contents

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

Change log#

+
+

Version 0.1.1#

+

Added metrics classes (AUC, Cindex, Brier score) +Added Kaplan Meier +Created Sphinx documentation +Added R benchmark comparison

+
+
+

Version 0.1.0#

+

Initial release of CoxPH and Weibull classes.

+
+
+ + +
+ + + + + + + + +
+ + + +
+ + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/README-copy.html b/README-copy.html new file mode 100644 index 0000000..50bb4ce --- /dev/null +++ b/README-copy.html @@ -0,0 +1,638 @@ + + + + + + + + + + + Survival analysis made easy — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + +
+ +
+

Survival analysis made easy#

+
+

:warning: :construction: We are still working on the publication of this project and appreciate your patience until everything will be ready. :construction: :warning:

+
+

TorchSurv is a Python package that serves as a companion tool to perform deep survival modeling within the PyTorch environment. Unlike existing libraries that impose specific parametric forms on users, TorchSurv enables the use of custom PyTorch-based deep survival models. With its lightweight design, minimal input requirements, full PyTorch backend, and freedom from restrictive survival model parameterizations, TorchSurv facilitates efficient survival model implementation, particularly beneficial for high-dimensional input data scenarios.

+
+
+

TL;DR#

+

Our idea is to keep things simple. You are free to use any model architecture you want! Our code has 100% PyTorch backend and behaves like any other functions (losses or metrics) you may be familiar with.

+

Our functions are designed to support you, not to make you jump through hoops. Here’s a pseudo code illustrating how easy is it to use TorchSurv to fit and evaluate a Cox proportional hazards model:

+
from torchsurv.loss import cox
+from torchsurv.metrics.cindex import ConcordanceIndex
+
+# Pseudo training loop
+for data in dataloader:
+    x, event, time = data
+    estimate = model(x)  # shape = torch.Size([64, 1]), if batch size is 64
+    loss = cox.neg_partial_log_likelihood(estimate, event, time)
+    loss.backward()  # native torch backend
+
+# You can check model performance using our evaluation metrics, e.g, the concordance index with
+cindex = ConcordanceIndex()
+cindex(estimate, event, time)
+
+# You can obtain the confidence interval of the c-index
+cindex.confidence_interval()
+
+# You can test whether the observed c-index is greater than 0.5 (random estimator)
+cindex.p_value(method="noether", alternative="two_sided")
+
+# You can even compare the metrics between two models (e.g., vs. model B)
+cindex.compare(cindexB)
+
+
+
+
+

Installation#

+

First, install the package:

+
pip install torchsurv
+
+
+

or for local installation (from package root)

+
pip install -e .
+
+
+

If you use Conda, you can install requirements into a conda environment +using the environment.yml file included in the dev subfolder of the source repository.

+
+
+

Getting started#

+

We recommend starting with the introductory guide, where you’ll find an overview of the package’s functionalities.

+
+

Survival data#

+

We simulate a random batch of 64 subjects. Each subject is associated with a binary event status (= True if event occured), a time-to-event or censoring and 16 covariates.

+
>>> import torch
+>>> _ = torch.manual_seed(52)
+>>> n = 64
+>>> x = torch.randn((n, 16))
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> time = torch.randint(low=1, high=100, size=(n,)).float()
+
+
+
+
+

Cox proportional hazards model#

+

The user is expected to have defined a model that outputs the estimated log relative hazard for each subject. For illustrative purposes, we define a simple linear model that generates a linear combination of the covariates.

+
>>> from torch import nn
+>>> model_cox = nn.Sequential(nn.Linear(16, 1))
+>>> log_hz = model_cox(x)
+>>> print(log_hz.shape)
+torch.Size([64, 1])
+
+
+

Given the estimated log relative hazard and the survival data, we calculate the current loss for the batch with:

+
>>> from torchsurv.loss.cox import neg_partial_log_likelihood
+>>> loss = neg_partial_log_likelihood(log_hz, event, time)
+>>> print(loss)
+tensor(4.1723, grad_fn=<DivBackward0>)
+
+
+

We obtain the concordance index for this batch with:

+
>>> from torchsurv.metrics.cindex import ConcordanceIndex
+>>> with torch.no_grad(): log_hz = model_cox(x)
+>>> cindex = ConcordanceIndex()
+>>> print(cindex(log_hz, event, time))
+tensor(0.4872)
+
+
+

We obtain the Area Under the Receiver Operating Characteristic Curve (AUC) at a new time t = 50 for this batch with:

+
>>> from torchsurv.metrics.auc import Auc
+>>> new_time = torch.tensor(50.)
+>>> auc = Auc()
+>>> print(auc(log_hz, event, time, new_time=50))
+tensor([0.4737])
+
+
+
+
+

Weibull accelerated failure time (AFT) model#

+

The user is expected to have defined a model that outputs for each subject the estimated log scale and optionally the log shape of the Weibull distribution that the event density follows. In case the model has a single output, TorchSurv assume that the shape is equal to 1, resulting in the event density to be an exponential distribution solely parametrized by the scale.

+

For illustrative purposes, we define a simple linear model that estimate two linear combinations of the covariates (log scale and log shape parameters).

+
>>> from torch import nn
+>>> model_weibull = nn.Sequential(nn.Linear(16, 2))
+>>> log_params = model_weibull(x)
+>>> print(log_params.shape)
+torch.Size([64, 2])
+
+
+

Given the estimated log scale and log shape and the survival data, we calculate the current loss for the batch with:

+
>>> from torchsurv.loss.weibull import neg_log_likelihood
+>>> loss = neg_log_likelihood(log_params, event, time)
+>>> print(loss)
+tensor(82931.5078, grad_fn=<DivBackward0>)
+
+
+

To evaluate the predictive performance of the model, we calculate subject-specific log hazard and survival function evaluated at all times with:

+
>>> from torchsurv.loss.weibull import log_hazard
+>>> from torchsurv.loss.weibull import survival_function
+>>> with torch.no_grad(): log_params = model_weibull(x)
+>>> log_hz = log_hazard(log_params, time)
+>>> print(log_hz.shape)
+torch.Size([64, 64])
+>>> surv = survival_function(log_params, time)
+>>> print(surv.shape)
+torch.Size([64, 64])
+
+
+

We obtain the concordance index for this batch with:

+
>>> from torchsurv.metrics.cindex import ConcordanceIndex
+>>> cindex = ConcordanceIndex()
+>>> print(cindex(log_hz, event, time))
+tensor(0.4062)
+
+
+

We obtain the AUC at a new time t = 50 for this batch with:

+
>>> from torchsurv.metrics.auc import Auc
+>>> new_time = torch.tensor(50.)
+>>> log_hz_t = log_hazard(log_params, time=new_time)
+>>> auc = Auc()
+>>> print(auc(log_hz_t, event, time, new_time=new_time))
+tensor([0.3509])
+
+
+

We obtain the integrated brier-score with:

+
>>> from torchsurv.metrics.brier_score import BrierScore
+>>> brier_score = BrierScore()
+>>> bs = brier_score(surv, event, time)
+>>> print(brier_score.integral())
+tensor(0.4447)
+
+
+
+
+ +
+

Contributing#

+

We value contributions from the community to enhance and improve this project. If you’d like to contribute, please consider the following:

+
    +
  1. Create Issues: If you encounter bugs, have feature requests, or want to suggest improvements, please create an issue in the GitHub repository. Make sure to provide detailed information about the problem, including code for reproducibility, or enhancement you’re proposing.

  2. +
  3. Fork and Pull Requests: If you’re willing to address an existing issue or contribute a new feature, fork the repository, create a new branch, make your changes, and then submit a pull request. Please ensure your code follows our coding conventions and include tests for any new functionality.

  4. +
+

By contributing to this project, you agree to license your contributions under the same license as this project.

+
+
+

Contact#

+

If you have any questions, suggestions, or feedback, feel free to reach out to us.

+
+
+

Cite#

+

If you use this project in academic work or publications, we appreciate citing it using the following BibTeX entry:

+

TEMPORARY PLACEHOLDER.

+
+ + +
+ + + + + + +
+ +
+
+
+ +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/torchsurv.loss.cox.html b/_autosummary/torchsurv.loss.cox.html new file mode 100644 index 0000000..6d2aeb1 --- /dev/null +++ b/_autosummary/torchsurv.loss.cox.html @@ -0,0 +1,553 @@ + + + + + + + + + + + torchsurv.loss.cox — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

torchsurv.loss.cox

+ +
+
+ +
+

Contents

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

torchsurv.loss.cox#

+

Functions

+ + + + + + +

neg_partial_log_likelihood(log_hz, event, time)

Compute the negative of the partial log likelihood for the Cox proportional hazards model.

+
+
+torchsurv.loss.cox.neg_partial_log_likelihood(log_hz: Tensor, event: Tensor, time: Tensor, ties_method: str = 'efron', reduction: str = 'mean', checks: bool = True) Tensor#
+

Compute the negative of the partial log likelihood for the Cox proportional hazards model.

+
+
Parameters:
+
    +
  • log_hz (torch.Tensor, float) – Log relative hazard of length n_samples.

  • +
  • event (torch.Tensor, bool) – Event indicator of length n_samples (= True if event occured).

  • +
  • time (torch.Tensor) – Time-to-event or censoring of length n_samples.

  • +
  • ties_method (str) – Method to handle ties in event time. Defaults to “efron”. +Must be one of the following: “efron”, “breslow”.

  • +
  • reduction (str) – Method to reduce losses. Defaults to “mean”. +Must be one of the following: “sum”, “mean”.

  • +
  • checks (bool) – Whether to perform input format checks. +Enabling checks can help catch potential issues in the input data. +Defaults to True.

  • +
+
+
Returns:
+

Negative of the partial log likelihood.

+
+
Return type:
+

(torch.tensor, float)

+
+
+
+

Note

+

For each subject \(i \in \{1, \cdots, N\}\), denote \(X_i\) as the survival time and \(D_i\) as the +censoring time. Survival data consist of the event indicator, \(\delta_i=1(X_i\leq D_i)\) +(argument event) and the time-to-event or censoring, \(T_i = \min(\{ X_i,D_i \})\) +(argument time).

+

The log hazard function for the Cox proportional hazards model has the form:

+
+\[\log \lambda_i (t) = \log \lambda_{0}(t) + \log \theta_i\]
+

where \(\log \theta_i\) is the log relative hazard (argument log_hz).

+

No ties in event time. +If the set \(\{T_i: \delta_i = 1\}_{i = 1, \cdots, N}\) represent unique event times (i.e., no ties), +the standard Cox partial likelihood can be used [Cox72]. Let \(\tau_1 < \tau_2 < \cdots < \tau_N\) +be the ordered times and let \(R(\tau_i) = \{ j: \tau_j \geq \tau_i\}\) +be the risk set at \(\tau_i\). The partial log likelihood is defined as:

+
+\[pll = \sum_{i: \: \delta_i = 1} \left(\log \theta_i - \log\left(\sum_{j \in R(\tau_i)} \theta_j \right) \right)\]
+

Ties in event time handled with Breslow’s method. +Breslow’s method [Bre75] describes the approach in which the procedure described above is used unmodified, +even when ties are present. If two subjects A and B have the same event time, subject A will be at risk for the +event that happened to B, and B will be at risk for the event that happened to A. +Let \(\xi_1 < \xi_2 < \cdots\) denote the unique ordered times (i.e., unique \(\tau_i\)). Let \(H_k\) be the set of +subjects that have an event at time \(\xi_k\) such that \(H_k = \{i: \tau_i = \xi_k, \delta_i = 1\}\), and let \(m_k\) +be the number of subjects that have an event at time \(\xi_k\) such that \(m_k = |H_k|\).

+
+\[pll = \sum_{k} \left( {\sum_{i\in H_{k}}\log \theta_i} - m_k \: \log\left(\sum_{j \in R(\tau_k)} \theta_j \right) \right)\]
+

Ties in event time handled with Efron’s method. +An alternative approach that is considered to give better results is the Efron’s method [Efr77]. +As a compromise between the Cox’s and Breslow’s method, Efron suggested to use the average +risk among the subjects that have an event at time \(\xi_k\):

+
+\[\bar{\theta}_{k} = {\frac {1}{m_{k}}}\sum_{i\in H_{k}}\theta_i\]
+

Efron approximation of the partial log likelihood is defined by

+
+\[pll = \sum_{k} \left( {\sum_{i\in H_{k}}\log \theta_i} - \sum_{r =0}^{m_{k}-1} \log\left(\sum_{j \in R(\xi_k)}\theta_j-r\:\bar{\theta}_{j}\right)\right)\]
+
+

Examples

+
>>> log_hz = torch.tensor([0.1, 0.2, 0.3, 0.4, 0.5])
+>>> event = torch.tensor([1, 0, 1, 0, 1], dtype=torch.bool)
+>>> time = torch.tensor([1., 2., 3., 4., 5.])
+>>> neg_partial_log_likelihood(log_hz, event, time) # default, mean of log likelihoods across patients
+tensor(1.0071)
+>>> neg_partial_log_likelihood(log_hz, event, time, reduction = 'sum') # sun of log likelihoods across patients
+tensor(3.0214)
+>>> time = torch.tensor([1., 2., 2., 4., 5.])  # Dealing with ties (default: Efron)
+>>> neg_partial_log_likelihood(log_hz, event, time, ties_method = "efron")
+tensor(1.0873)
+>>> neg_partial_log_likelihood(log_hz, event, time, ties_method = "breslow")  # Dealing with ties (Bfron)
+tensor(1.0873)
+
+
+

References

+
+
+
+[Bre75] +

N. E. Breslow. Analysis of survival data under the proportional hazards model. International Statistical Review / Revue Internationale de Statistique, 43(1):45, April 1975.

+
+
+[Cox72] +

D. R. Cox. Regression models and life‐tables. Journal of the Royal Statistical Society: Series B (Methodological), 34(2):187–202, January 1972.

+
+
+[Efr77] +

Bradley Efron. The efficiency of cox’s likelihood function for censored data. Journal of the American Statistical Association, 72(359):557–565, September 1977.

+
+
+
+
+ +
+ + +
+ + + + + + + + +
+ + + +
+ + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/torchsurv.loss.momentum.html b/_autosummary/torchsurv.loss.momentum.html new file mode 100644 index 0000000..98db7a5 --- /dev/null +++ b/_autosummary/torchsurv.loss.momentum.html @@ -0,0 +1,624 @@ + + + + + + + + + + + torchsurv.loss.momentum — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

torchsurv.loss.momentum

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

torchsurv.loss.momentum#

+

Classes

+ + + + + + +

Momentum(backbone, loss[, batchsize, steps, ...])

Survival framework to momentum update learning to decouple batch size during model training.

+
+
+class torchsurv.loss.momentum.Momentum(backbone: Module, loss: Callable, batchsize: int = 16, steps: int = 4, rate: float = 0.999)#
+

Survival framework to momentum update learning to decouple batch size during model training. +Two networks are concurently trained, an online network and a target network. The online network outputs batches +are concanetaed and used by the target network, so it virtually increase its batchsize.

+

The target network (k)is updated using an exponential momentum average (EMA) using parameters from the online network (q). +The online network is trained using a memory bank of previously computed log hazards, but only tracking loss from current batch.

+
+\[\theta_k \leftarrow m \theta_k + (1 - m) \theta_q\]
+

with m=0.999.

+

Here is a pseudo python code to illustrate what is going on under the hood.

+
model_q = model_k                 # Same architecture, random weights
+model_k.require_grad = False      # No gradient update for target network (k)
+hz_memory_bank = deque(maxlen=n * batch_size)  # Double-ended queue size n * batch_size
+
+for epoch in epochs:
+    hz_q = model_q(batch)            # Compute current estmate w/ ONLINE network (q)
+    hz_loss = hz_memory_bank + hz_q  # Combine current log hz and memory bank
+    loss = loss_function(hz_loss)    # Compute loss with pooled log hz
+    loss.backward()                  # Update online model (q) w/ PyTorch autograd
+    model_k.ema_update(model_q)      # Update target model (k) with Exponential Moving Average (EMA)
+    hz_k = model_k(batch)            # Compute batch estimate w/ TARGET network (k)
+    hz_memory_bank += hz_k           # Replace oldest batch with current from memory bank
+
+
+
+

Note

+

This code is inspired from MoCo [HFW+19] and its ability to decouple batch size from training size.

+
+
+

Note

+

A notable difference is that memory bank is updated at the end of the step, not at the beginning. This is because +MoCo uses the target network batch for the positive pair, while we use a rank-based loss function. We then need +to exclude the current batch from the memory bank to effectively compute our loss.

+
+

References

+
+
+
+[HFW+19] +

Kaiming He, Haoqi Fan, Yuxin Wu, Saining Xie, and Ross Girshick. Momentum contrast for unsupervised visual representation learning. 2019. URL: http://arxiv.org/abs/1911.05722.

+
+
+
+
+
+__init__(backbone: Module, loss: Callable, batchsize: int = 16, steps: int = 4, rate: float = 0.999)#
+

Initialise the momentum class. Use must provide their model as backbone.

+
+
Parameters:
+
    +
  • backbone (nn.Module) – Torch model to be use as backbone. The model must return either one (Cox) or two ouputs (Weibull)

  • +
  • loss (Callable) – Torchsurv loss function (Cox, Weibull)

  • +
  • batchsize (int, optional) – Number of samples per batch. Defaults to 16.

  • +
  • n (int, optional) – Number of queued batches to be stored for training. Defaults to 4.

  • +
  • rate (float, optional) – Exponential moving average rate. Defaults to 0.999.

  • +
+
+
+

Examples

+
>>> from torchsurv.loss import cox, weibull
+>>> _ = torch.manual_seed(42)
+>>> n = 4
+>>> params = torch.randn((n, 16))
+>>> events = torch.randint(low=0, high=2, size=(n,), dtype=torch.bool)
+>>> times = torch.randint(low=1, high=100, size=(n,))
+>>> backbone = torch.nn.Sequential(torch.nn.Linear(16, 1))  # Cox expect one ouput
+>>> model = Momentum(backbone=backbone, loss=cox.neg_partial_log_likelihood)
+>>> model(params, events, times)
+tensor(0.0978, grad_fn=<DivBackward0>)
+>>> model.online(params)  # online network (q) - w/ gradient
+tensor([[-0.7867],
+        [ 0.3161],
+        [-1.2158],
+        [-0.8195]], grad_fn=<AddmmBackward0>)
+>>> model.target(params)  # target network (k) - w/o gradient
+tensor([[-0.7867],
+        [ 0.3161],
+        [-1.2158],
+        [-0.8195]])
+
+
+
+

Note

+

self.encoder_k is the recommended to be used for inference. It refers to the target network (momentum).

+
+
+ +
+
+forward(inputs: Tensor, event: Tensor, time: Tensor) Tensor#
+

Compute the loss for the current batch and update the memory bank using momentum class.

+
+
Parameters:
+
    +
  • inputs (torch.Tensor) – Input tensors to the backbone model

  • +
  • event (torch.Tensor) – A boolean tensor indicating whether a patient experienced an event.

  • +
  • time (torch.Tensor) – A positive float tensor representing time to event (or censoring time)

  • +
+
+
Returns:
+

A loss tensor for the current batch.

+
+
Return type:
+

torch.Tensor

+
+
+

Examples

+
>>> from torchsurv.loss import cox, weibull
+>>> _ = torch.manual_seed(42)
+>>> n = 128  # samples
+>>> x = torch.randn((n, 16))
+>>> y = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> t = torch.randint(low=1, high=100, size=(n,))
+>>> backbone = torch.nn.Sequential(torch.nn.Linear(16, 1))  # (log hazards)
+>>> model_cox = Momentum(backbone, loss=cox.neg_partial_log_likelihood)  # Cox loss
+>>> with torch.no_grad(): model_cox.forward(x, y, t)
+tensor(2.1366)
+>>> backbone = torch.nn.Sequential(torch.nn.Linear(16, 2))  # (lambda, rho)
+>>> model_weibull = Momentum(backbone, loss=weibull.neg_log_likelihood)  # Weibull loss
+>>> with torch.no_grad(): torch.round(model_weibull.forward(x, y, t), decimals=2)
+tensor(68.0400)
+
+
+
+ +
+
+infer(inputs: Tensor) Tensor#
+

Evaluate data with target network

+
+
Parameters:
+

x (torch.Tensor) – Input tensors to the backbone model

+
+
Returns:
+

Predictions from target (momentum) network without augmentation (.eval()) nor gradient.

+
+
Return type:
+

torch.Tensor

+
+
+

Examples

+
>>> from torchsurv.loss import weibull
+>>> _ = torch.manual_seed(42)
+>>> backbone = torch.nn.Sequential(torch.nn.Linear(8, 2))  # Weibull expect two ouputs
+>>> model = Momentum(backbone=backbone, loss=weibull.neg_log_likelihood)
+>>> model.infer(torch.randn((3, 8)))
+tensor([[ 0.5342,  0.0062],
+        [ 0.6439,  0.7863],
+        [ 0.9771, -0.8513]])
+
+
+
+ +
+ +
+ + +
+ + + + + + + + +
+ + + +
+ + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/torchsurv.loss.weibull.html b/_autosummary/torchsurv.loss.weibull.html new file mode 100644 index 0000000..7aab64e --- /dev/null +++ b/_autosummary/torchsurv.loss.weibull.html @@ -0,0 +1,680 @@ + + + + + + + + + + + torchsurv.loss.weibull — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

torchsurv.loss.weibull

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

torchsurv.loss.weibull#

+

Functions

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

cumulative_hazard(log_params, time[, all_times])

Cumulative hazard for the Weibull Accelerated Time Failure (AFT) survival model.

log_hazard(log_params, time[, all_times])

Log hazard of the Weibull Accelerated Time Failure (AFT) survival model.

neg_log_likelihood(log_params, event, time)

Negative of the log likelihood for the Weibull Accelerated Time Failure (AFT) survival model.

survival_function(log_params, time[, all_times])

Survival function for the Weibull Accelerated Time Failure (AFT) survival model.

+
+
+torchsurv.loss.weibull.neg_log_likelihood(log_params: Tensor, event: Tensor, time: Tensor, reduction: str = 'mean', checks: bool = True) Tensor#
+

Negative of the log likelihood for the Weibull Accelerated Time Failure (AFT) survival model.

+
+
Parameters:
+
    +
  • log_params (torch.Tensor, float) – Parameters of the Weibull distribution of shape = (n_samples, 1) or (n_samples, 2). +The first column corresponds to the log scale parameter. The second column +corresponds to the log shape parameter. If the log shape parameter is missing, it is +imputed with 0.

  • +
  • event (torch.Tensor, bool) – Event indicator of length n_samples (= True if event occured).

  • +
  • time (torch.Tensor, float) – Time-to-event or censoring of length n_samples.

  • +
  • reduction (str) – Method to reduce losses. Defaults to “mean”. +Must be one of the following: “sum”, “mean”.

  • +
  • checks (bool) – Whether to perform input format checks. +Enabling checks can help catch potential issues in the input data. +Defaults to True.

  • +
+
+
Returns:
+

Negative of the log likelihood.

+
+
Return type:
+

(torch.Tensor, float)

+
+
+
+

Note

+

For each subject \(i \in \{1, \cdots, N\}\), denote \(X_i\) as the survival time and \(D_i\) as the +censoring time. Survival data consist of the event indicator, \(\delta_i=1(X_i\leq D_i)\) +(argument event) and the time-to-event or censoring, \(T_i = \min(\{ X_i,D_i \})\) +(argument time).

+

The log hazard function for the Weibull AFT survival model [Car03] of subject \(i\) at time \(t\) has the form:

+
+\[\log h_i(t) = \log{\rho_i} - \log{\lambda_i} + (\rho_i -1) \left( \log{t} - \log{\lambda_i}\right)\]
+

where \(\log{\lambda_i}\) is the log scale parameter (first column of argument log_params) +and \(\log{\rho_i}\) is the log shape parameter (second column of argument log_params). +The cumulative hazard for the Weibull survival model of subject \(i\) at time \(t\) has the form:

+
+\[H_i(t) = \left(\frac{t}{\lambda_i}\right)^{\rho_i}\]
+

The survival function for the Weibull survival model of subject \(i\) at time \(t\) has the form:

+
+\[S_i(t) = 1 - F(t | \lambda_i, \rho_i)\]
+

where \(F(t | \lambda, \rho)\) is the cumulative distribution function (CDF) of the Weibull distribution given +scale parameter \(\lambda\) and shape parameter \(\rho\).

+

The log likelihood of the Weibull survival model is

+
+\[ll = \sum_{i: \delta_i = 1} \log h_i(T_i) - \sum_{i = 1}^N H_i(T_i)\]
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 4
+>>> log_params = torch.randn((n, 2))
+>>> event = torch.randint(low=0, high=2, size=(n,), dtype=torch.bool)
+>>> time = torch.randint(low=1, high=100, size=(n,))
+>>> neg_log_likelihood(log_params, event, time) # Default: mean of log likelihoods across subject
+tensor(47.5035)
+>>> neg_log_likelihood(log_params, event, time, reduction = 'sum') # Sum of log likelihoods across subject
+tensor(190.0141)
+>>> neg_log_likelihood(torch.randn((n, 1)), event, time)  # Missing shape: exponential decrease
+tensor(66.7203)
+
+
+

References

+
+
+
+[Car03] +

Kevin J. Carroll. On the use and utility of the weibull model in the analysis of survival data. Controlled Clinical Trials, 24(6):682–701, December 2003.

+
+
+
+
+ +
+
+torchsurv.loss.weibull.survival_function(log_params: Tensor, time: Tensor, all_times: bool = True) Tensor#
+

Survival function for the Weibull Accelerated Time Failure (AFT) survival model.

+
+
Parameters:
+
    +
  • log_params (torch.Tensor, float) – Parameters of the Weibull distribution of shape = (n_samples, 1) or (n_samples, 2). +The first column corresponds to the log scale parameter. The second column +corresponds to the log shape parameter. If the log shape parameter is missing, it is +imputed with 0.

  • +
  • time (torch.Tensor, float) – Time at which to evaluate the survival function. +Should be of length n_samples to evaluate the survival function at observed time-to-event or censoring, +or of length one to evaluate the survival function at a new time.

  • +
  • all_times (bool) – If True, subject-specific survival function is evaluated at all time (used for evaluation metrics). +If False, subject-specific survival function is evaluated at respective time. +Defaults is True. +Ignored if time is of length one.

  • +
+
+
Returns:
+

Subject-specific survival function evaluated at time.

+
+
Return type:
+

(torch.Tensor, float)

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> time = torch.randint(low=1, high=100, size=(4,))
+>>> log_params = torch.randn((4, 2))
+>>> survival_function(log_params, time, all_times = False)  # Survival at respective time
+tensor([0.0002, 0.0000, 0.0299, 0.0000])
+>>> survival_function(log_params, time, all_times = True)  # Default. Survival at all observed time
+tensor([[1.7941e-04, 0.0000e+00, 0.0000e+00, 0.0000e+00],
+        [2.8610e-06, 0.0000e+00, 0.0000e+00, 0.0000e+00],
+        [4.1870e-01, 3.1040e-02, 2.9881e-02, 6.8224e-02],
+        [9.5576e-04, 0.0000e+00, 0.0000e+00, 0.0000e+00]])
+>>> survival_function(log_params, time=torch.tensor(10.0))  # Survival at one new time (e.g., 10 years)
+tensor([1.3709e-06, 5.9605e-08, 3.4954e-01, 1.5438e-05])
+>>> for t in torch.tensor([100.0, 150.0]): survival_function(log_params, time=t)  # Subject-specific survival at multiple new times
+tensor([0.0000, 0.0000, 0.0288, 0.0000])
+tensor([0.0000, 0.0000, 0.0123, 0.0000])
+
+
+
+ +
+
+torchsurv.loss.weibull.log_hazard(log_params: Tensor, time: Tensor, all_times: bool = True) Tensor#
+

Log hazard of the Weibull Accelerated Time Failure (AFT) survival model.

+
+
Parameters:
+
    +
  • log_params (torch.Tensor, float) – Parameters of the Weibull distribution of shape = (n_samples, 1) or (n_samples, 2). +The first column corresponds to the log scale parameter. The second column +corresponds to the log shape parameter. If the log shape parameter is missing, it is +imputed with 0.

  • +
  • time (torch.Tensor, float) – Time at which to evaluate the log hazard. +Should be of length n_samples to evaluate the log hazard at observed time-to-event or censoring, +or of length one to evaluate the log hazard at a new time.

  • +
  • all_times (bool) – If True, subject-specific log hazard is evaluated at all time (used for evaluation metrics). +If False, subject-specific log hazard is evaluated at respective time. +Defaults is True. +Ignored if time is of length one.

  • +
+
+
Returns:
+

Subject-specific log hazard evaluated at time.

+
+
Return type:
+

(torch.Tensor, float)

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> time = torch.randint(low=1, high=100, size=(4,))
+>>> log_params = torch.randn((4, 2))
+>>> log_hazard(log_params, time, all_times = False)  # Log hazard at respective time
+tensor([ 0.4392, -0.0303, -3.9672,  0.9140])
+>>> log_hazard(log_params, time, all_times = True)  # Default. Log hazard at all time
+tensor([[ 0.4392,  1.1174,  1.1227,  0.9913],
+        [ 0.4148, -0.0303, -0.0338,  0.0525],
+        [-2.7225, -3.9575, -3.9672, -3.7279],
+        [ 0.2606,  1.0632,  1.0695,  0.9140]])
+>>> log_hazard(log_params, time=torch.tensor(10.0))  # Log hazard at one new time (e.g., 10 years)
+tensor([ 0.5316,  0.3542, -2.8907,  0.3699])
+>>> for t in torch.tensor([100.0, 150.0]): log_hazard(log_params, time=t)  # Subject-specific log hazard at multiple new times
+tensor([ 1.1280, -0.0372, -3.9767,  1.0757])
+tensor([ 1.2330, -0.1062, -4.1680,  1.1999])
+
+
+
+ +
+
+torchsurv.loss.weibull.cumulative_hazard(log_params: Tensor, time: Tensor, all_times: bool = True) Tensor#
+

Cumulative hazard for the Weibull Accelerated Time Failure (AFT) survival model.

+
+
Parameters:
+
    +
  • log_params (torch.Tensor, float) – Parameters of the Weibull distribution of shape = (n_samples, 1) or (n_samples, 2). +The first column corresponds to the log scale parameter. The second column +corresponds to the log shape parameter. If the log shape parameter is missing, it is +imputed with 0.

  • +
  • time (torch.Tensor, float) – Time-to-event or censoring of length n_samples.

  • +
  • all_times (bool) – If True, subject-specific cumulative hazard is evaluated at all time (used for evaluation metrics). +If False, subject-specific cumulative hazard is evaluated at respective time. +Defaults is True.

  • +
+
+
Returns:
+

Subject-specific cumulative hazard evaluated at time.

+
+
Return type:
+

(torch.Tensor, float)

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> time = torch.randint(low=1, high=100, size=(4,))
+>>> log_params = torch.randn((4, 2))
+>>> cumulative_hazard(log_params, time, all_times=False) # Cumulative hazard at respective time
+tensor([  8.6257, 112.2115,   3.5105, 112.6339])
+>>> cumulative_hazard(log_params, time, all_times=True) # Default. Cumulative hazard at all time
+tensor([[  8.6257, 233.0865, 239.2167, 126.2805],
+        [ 12.7698, 112.2115, 114.1484,  74.9134],
+        [  0.8706,   3.4725,   3.5105,   2.6850],
+        [  6.9530, 212.7592, 218.5687, 112.6339]])
+
+
+
+ +
+ + +
+ + + + + + + + +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/torchsurv.metrics.auc.html b/_autosummary/torchsurv.metrics.auc.html new file mode 100644 index 0000000..d89dd9e --- /dev/null +++ b/_autosummary/torchsurv.metrics.auc.html @@ -0,0 +1,838 @@ + + + + + + + + + + + torchsurv.metrics.auc — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

torchsurv.metrics.auc

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

torchsurv.metrics.auc#

+

Classes

+ + + + + + +

Auc([checks, tied_tol])

Area Under the Curve class for survival models.

+
+
+class torchsurv.metrics.auc.Auc(checks: bool = True, tied_tol: float = 1e-08)#
+

Area Under the Curve class for survival models.

+
+
+__init__(checks: bool = True, tied_tol: float = 1e-08)#
+

Initialize an Auc for survival class model evaluation.

+
+
Parameters:
+
    +
  • tied_tol (float) – Tolerance for tied risk scores. +Defaults to 1e-8.

  • +
  • checks (bool) – Whether to perform input format checks. +Enabling checks can help catch potential issues in the input data. +Defaults to True.

  • +
+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> auc = Auc()
+>>> auc(estimate, event, time) # default: auc cumulative/dynamic
+tensor([0.7500, 0.4286, 0.3333])
+>>> auc.integral()
+tensor(0.5040)
+>>> auc.confidence_interval() # default: Blanche, two_sided
+tensor([[0.4213, 0.0000, 0.0000],
+        [1.0000, 0.9358, 0.7289]])
+>>> auc.p_value()
+tensor([0.1360, 0.7826, 0.4089])
+
+
+
+ +
+
+__call__(estimate: Tensor, event: Tensor, time: Tensor, auc_type: str = 'cumulative', weight: Tensor | None = None, new_time: Tensor | None = None, weight_new_time: Tensor | None = None, instate: bool = True) Tensor#
+

Compute the time-dependent Area Under the Receiver Operating Characteristic Curve (AUC).

+

The AUC at time \(t\) is the probability that a model correctly predicts +which of two comparable samples will experience an event by time \(t\) based on their +estimated risk scores. +The AUC is particularly useful for evaluating time-dependent predictions (e.g., 10-year mortality). +It is recommended to use AUC instead of the concordance index for such time-dependent predictions, as +AUC is proper in this context, while the concordance index is not [BKG18].

+
+
Parameters:
+
    +
  • estimate (torch.Tensor) – Estimated risk of event occurrence (i.e., risk score). +Can be of shape = (n_samples,) if subject-specific risk score is time-independent, +of shape = (n_samples, n_samples) if subject-specific risk score is evaluated at time, +or of shape = (n_samples, n_times) if subject-specific risk score is evaluated at new_time.

  • +
  • event (torch.Tensor, boolean) – Event indicator of size n_samples (= True if event occured).

  • +
  • time (torch.Tensor, float) – Time-to-event or censoring of size n_samples.

  • +
  • auc_type (str, optional) – AUC type. Defaults to “cumulative”. +Must be one of the following: “cumulative” for cumulative/dynamic, “incident” for incident/dynamic.

  • +
  • weight (torch.Tensor, optional) – Optional sample weight evaluated at time of size n_samples. +Defaults to 1.

  • +
  • new_time (torch.Tensor, optional) – Time points at which to evaluate the AUC of size n_times. Values must be within the range of follow-up in time. +Defaults to the event times excluding maximum (because number of controls for t > max(time) is 0).

  • +
  • weight_new_time (torch.tensor) – Optional sample weight evaluated at new_time of size n_times. +Defaults to 1.

  • +
+
+
Returns:
+

AUC evaluated at new_time.

+
+
Return type:
+

torch.Tensor

+
+
+
+

Note

+

The function evaluates either the cumulative/dynamic (C/D) or the incident/dynamic (I/D) AUC (argument auc_type) +at time \(t \in \{t_1, \cdots, t_K\}\) (argument new_time).

+

For each subject \(i \in \{1, \cdots, N\}\), denote \(X_i\) as the survival time and \(D_i\) as the +censoring time. Survival data consist of the event indicator, \(\delta_i=(X_i\leq D_i)\) +(argument event) and the time-to-event or censoring, \(T_i = \min(\{ X_i,D_i \})\) +(argument time).

+

The risk score measures the risk (or a proxy thereof) that a subject has an event. +The function accepts time-dependent risk score or time-independent risk score. The time-dependent risk score +of subject \(i\) is specified through a function \(q_i: [0, \infty) \rightarrow \mathbb{R}\). +The time-independent risk score of subject \(i\) is specified by a constant \(q_i\). +The argument estimate is the estimated risk score. +For time-dependent risk score: if new_time is specified, the argument estimate should be of shape = (N,K) +(\((i,k)\) th element is \(\hat{q}_i(t_k)\)); +if new_time is not specified, the argument estimate should be of shape = (N,N) +(\((i,j)\) th element is \(\hat{q}_i(T_j)\)) . +For time-independent risk score, the argument estimate should be of length +N (\(i\) th element is \(\hat{q}_i\)).

+

The AUC C/D and AUC I/D evaluated at time \(t\) are defined by

+
+\[\begin{split}\text{AUC}^{C/D}(t) = p(q_i(t) > q_j(t) \: | \: X_i \leq t, X_j > t) \\ +\text{AUC}^{I/D}(t) = p(q_i(t) > q_j(t) \: | \: X_i = t, X_j > t).\end{split}\]
+

The default estimators of the AUC C/D and AUC I/D at time \(t\) [BDJacqminGadda13] returned by the function are

+
+\[\begin{split}\hat{\text{AUC}}^{C/D}(t) = \frac{\sum_i \sum_j \delta_i \: I(T_i \leq t, T_j > t) I(\hat{q}_i(t) > \hat{q}_j(t))}{\sum_i \delta_i \: I(T_i \leq t) \sum_j I(T_j > t)} \\ +\hat{\text{AUC}}^{I/D}(t) = \frac{\sum_i \sum_j \delta_i \: I(T_i = t, T_j > t) I(\hat{q}_i(t) > \hat{q}_j(t))}{\sum_i \delta_i \: I(T_i = t) \sum_j I(T_j > t)}.\end{split}\]
+

These estimators are considered naive because, when the event times are censored, all subjects censored +before time point \(t\) are ignored. Additionally, the naive estimators +converge to an association measure that involves the censoring distribution. +To address this shortcoming, Uno et al. [UCTW07] proposed to employ the +inverse probability weighting technique. In this context, each subject included at time +\(t\) is weighted by the inverse probability of censoring \(\omega(t) = 1 / \hat{D}(t)\), where +\(\hat{D}(t)\) is the Kaplan-Meier estimate of the censoring distribution, \(P(D>t)\). +The censoring-adjusted AUC C/D estimate at time \(t\) is

+
+\[\begin{split}\hat{\text{AUC}}^{C/D}(t) = \frac{\sum_i \sum_j \delta_i \: \omega(T_i) \: I(T_i \leq t, T_j > t) I(\hat{q}_i(t) > \hat{q}_j(t))}{\sum_i \delta_i \: \omega(T_i) \: I(T_i \leq t) \sum_j I(T_j > t)} \\\end{split}\]
+

Note that the censoring-adjusted AUC I/D estimate is the same as the “naive” estimate because the weights are all equal to \(\omega(t)\).

+

The censoring-adjusted AUC C/D estimate can be obtained by specifying the argument +weight, the weights evaluated at each time (\(\omega(T_1), \cdots, \omega(T_N)\)). +If new_time is specified, the argument weight_new_time +should also be specified accordingly, the weights evaluated at each new_time +(\(\omega(t_1), \cdots, \omega(t_K)\)). The latter is required to compute the standard error of the AUC. +In the context of train/test split, the weights should be derived from the censoring distribution estimated in the training data. +Specifically, the censoring distribution is estimated using the training set and then evaluated at the subject time within the test set.

+
+

Examples

+
>>> from torchsurv.stats.ipcw import get_ipcw
+>>> _ = torch.manual_seed(42)
+>>> n = 20
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> auc = Auc()
+>>> auc(estimate, event, time) # default: naive auc c/d
+tensor([0.9474, 0.5556, 0.5294, 0.6429, 0.5846, 0.6389, 0.5844, 0.5139, 0.4028,
+        0.5400, 0.4545, 0.7500])
+>>> auc(estimate, event, time, auc_type = "incident") # naive auc i/d
+tensor([0.9474, 0.1667, 0.4706, 0.9286, 0.3846, 0.8333, 0.3636, 0.2222, 0.0000,
+        0.8000, 0.5000, 1.0000])
+>>> ipcw = get_ipcw(event, time) # ipcw weight at time
+>>> auc(estimate, event, time, weight = ipcw) # Uno's auc c/d
+tensor([0.9474, 0.5556, 0.5294, 0.6521, 0.5881, 0.6441, 0.5865, 0.5099, 0.3929,
+        0.5422, 0.4534, 0.7996])
+>>> new_time = torch.unique(torch.randint(low=100, high=150, size=(n,)).float()) # new time at which to evaluate auc
+>>> ipcw_new_time = get_ipcw(event, time, new_time) # ipcw at new_time
+>>> auc(estimate, event, time, new_time = new_time, weight = ipcw, weight_new_time = ipcw_new_time) # Uno's auc c/d at new_time
+tensor([0.5333, 0.5333, 0.5333, 0.5333, 0.6521, 0.6521, 0.5881, 0.5881, 0.5865,
+        0.5865, 0.5865, 0.5865, 0.5865, 0.6018, 0.6018, 0.5099])
+
+
+

References

+
+
+
+[BDJacqminGadda13] +

Paul Blanche, Jean‐François Dartigues, and Hélène Jacqmin‐Gadda. Review and comparison of roc curve estimators for a time‐dependent outcome with marker‐dependent censoring. Biometrical Journal, 55(5):687–704, June 2013.

+
+
+[BKG18] +

Paul Blanche, Michael W Kattan, and Thomas A Gerds. The c-index is not proper for the evaluation of $t$-year predicted risks. Biostatistics, 20(2):347–357, February 2018.

+
+
+[UCTW07] +

Hajime Uno, Tianxi Cai, Lu Tian, and L. J Wei. Evaluating prediction rules fort-year survivors with censored regression models. Journal of the American Statistical Association, 102(478):527–537, June 2007.

+
+
+
+
+ +
+
+integral(tmax: Tensor | None = None)#
+

Compute the integral of the time-dependent AUC.

+
+
Parameters:
+

tmax (torch.Tensor, optional) – A number specifying the upper limit of the time range to compute the AUC integral. +Defaults to new_time[-1] for cumulative/dynamic AUC and new_time[-1]-1 for incident/dynamic AUC.

+
+
Returns:
+

Integral of AUC over [0-tmax].

+
+
Return type:
+

torch.Tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> auc = Auc()
+>>> auc(estimate, event, time, auc_type = "incident")
+tensor([0.7500, 0.1429, 0.1667])
+>>> auc.integral() # integral of the auc incident/dynamic
+tensor(0.4667)
+
+
+

Notes

+

In case auc_type = “cumulative” (cumulative/dynamic AUC), the values of AUC are weighted by +the estimated event density. In case auc_type = “incident” +(incident/dynamic AUC), the values of AUC are weighted by 2 times the product of the estimated +event density and the estimated survival function [HZ05]. +The estimated survival +function is the Kaplan-Meier estimate. The estimated event density +is obtained from the discrete incremental changes of the estimated survival function.

+

References

+
+
+
+[HZ05] +

Patrick J. Heagerty and Yingye Zheng. Survival model predictive accuracy and roc curves. Biometrics, 61(1):92–105, February 2005.

+
+
+
+
+ +
+
+confidence_interval(method: str = 'blanche', alpha: float = 0.05, alternative: str = 'two_sided', n_bootstraps: int = 999) Tensor#
+

Compute the confidence interval of the AUC.

+

This function calculates either the pointwise confidence interval or the bootstrap +confidence interval for the AUC. The pointwise confidence interval is computed +assuming that the AUC is normally distributed and using the standard error estimated with +Blanche et al. [BDJacqminGadda13] method. The bootstrap confidence interval is constructed based on the +distribution of bootstrap samples.

+
+
Parameters:
+
    +
  • method (str) – Method for computing confidence interval. Defaults to “blanche”. +Must be one of the following: “blanche”, “bootstrap”.

  • +
  • alpha (float) – Significance level. Defaults to 0.05.

  • +
  • alternative (str) – Alternative hypothesis. Defaults to “two_sided”. +Must be one of the following: “two_sided”, “greater”, “less”.

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if method is not “bootstrap”.

  • +
+
+
Returns:
+

Lower and upper bounds of the confidence interval.

+
+
Return type:
+

torch.Tensor([lower,upper])

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> auc = Auc()
+>>> auc(estimate, event, time)
+tensor([0.7500, 0.4286, 0.3333])
+>>> auc.confidence_interval() # Default: Blanche, two_sided
+tensor([[0.4213, 0.0000, 0.0000],
+        [1.0000, 0.9358, 0.7289]])
+>>> auc.confidence_interval(method = "bootstrap", alternative = "greater")
+tensor([[0.3750, 0.1667, 0.0833],
+        [1.0000, 1.0000, 1.0000]])
+
+
+

References

+
+
+
+[BDJacqminGadda13] +(1,2,3) +

Paul Blanche, Jean‐François Dartigues, and Hélène Jacqmin‐Gadda. Estimating and comparing time‐dependent areas under receiver operating characteristic curves for censored event times with competing risks. Statistics in Medicine, 32(30):5381–5397, September 2013.

+
+
+
+
+ +
+
+p_value(method: str = 'blanche', alternative: str = 'two_sided', n_bootstraps: int = 999) Tensor#
+

Perform a one-sample hypothesis test on the AUC.

+

This function calculates either the pointwise p-value or the bootstrap p-value +for testing the null hypothesis that the AUC is equal to 0.5. +The pointwise p-value is computed assuming that the AUC is normally distributed +and using the standard error estimated using Blanche et al. [BDJacqminGadda13] method. +The bootstrap p-value is derived by permuting risk predictions to estimate +the sampling distribution under the null hypothesis.

+
+
Parameters:
+
    +
  • method (str) – Method for computing p-value. Defaults to “blanche”. +Must be one of the following: “blanche”, “bootstrap”.

  • +
  • alternative (str) – Alternative hypothesis. Defaults to “two_sided”. +Must be one of the following: “two_sided” (AUC is not equal to 0.5), +“greater” (AUC is greater than 0.5), “less” (AUC is less than 0.5).

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if method is not “bootstrap”.

  • +
+
+
Returns:
+

p-value of the statistical test.

+
+
Return type:
+

torch.Tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> auc = Auc()
+>>> auc(estimate, event, time)
+tensor([0.7500, 0.4286, 0.3333])
+>>> auc.p_value() # Default: Blanche, two_sided
+tensor([0.1360, 0.7826, 0.4089])
+>>> auc.p_value(method = "bootstrap", alternative = "greater")
+tensor([0.2400, 0.5800, 0.7380])
+
+
+
+ +
+
+compare(other, method: str = 'blanche', n_bootstraps: int = 999) tensor#
+

Compare two AUCs.

+

This function compares two AUCs computed on the same data with different +risk predictions. The statistical hypotheses are +formulated as follows, null hypothesis: auc1 = auc2 and alternative +hypothesis: auc1 > auc2. +The statistical test is either a Student t-test for dependent samples or +a two-sample bootstrap test. The Student t-test assumes that the AUC is normally distributed +and uses the standard errors estimated with Blanche et al. [BDJacqminGadda13] method.

+
+
Parameters:
+
    +
  • other (Auc) – Another instance of the Auc class representing auc2.

  • +
  • method (str) – Statistical test used to perform the hypothesis test. Defaults to “blanche”. +Must be one of the following: “blanche”, “bootstrap”.

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if method is not “bootstrap”.

  • +
+
+
Returns:
+

p-value of the statistical test.

+
+
Return type:
+

torch.tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> auc1 = Auc()
+>>> auc1(torch.randn((n,)), event, time)
+tensor([0.7500, 0.4286, 0.3333])
+>>> auc2 = Auc()
+>>> auc2(torch.randn((n,)), event, time)
+tensor([0.0000, 0.1429, 0.0556])
+>>> auc1.compare(auc2) # default: Blanche
+tensor([0.0008, 0.2007, 0.1358])
+>>> auc1.compare(auc2, method = "bootstrap")
+tensor([0.0220, 0.1970, 0.1650])
+
+
+
+ +
+ +
+ + +
+ + + + + + + + +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/torchsurv.metrics.brier_score.html b/_autosummary/torchsurv.metrics.brier_score.html new file mode 100644 index 0000000..7abfab7 --- /dev/null +++ b/_autosummary/torchsurv.metrics.brier_score.html @@ -0,0 +1,807 @@ + + + + + + + + + + + torchsurv.metrics.brier_score — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + +
+ +
+

torchsurv.metrics.brier_score#

+

Classes

+ + + + + + +

BrierScore([checks])

Compute the Brier Score for survival models.

+
+
+class torchsurv.metrics.brier_score.BrierScore(checks: bool = True)#
+

Compute the Brier Score for survival models.

+
+
+__init__(checks: bool = True)#
+

Initialize a BrierScore for survival class model evaluation.

+
+
Parameters:
+

checks (bool) – Whether to perform input format checks. +Enabling checks can help catch potential issues in the input data. +Defaults to True.

+
+
+

Examples

+
>>> _ = torch.manual_seed(52)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.rand((n,len(time)))
+>>> brier_score = BrierScore()
+>>> brier_score(estimate, event, time)
+tensor([0.2463, 0.2740, 0.3899, 0.1964, 0.3608, 0.2821, 0.1932, 0.2978, 0.1950,
+        0.1668])
+>>> brier_score.integral() # integrated brier score
+tensor(0.2862)
+>>> brier_score.confidence_interval() # default: parametric, two-sided
+tensor([[0.1061, 0.0604, 0.2360, 0.0533, 0.1252, 0.0795, 0.0000, 0.1512, 0.0381,
+         0.0051],
+        [0.3866, 0.4876, 0.5437, 0.3394, 0.5965, 0.4847, 0.4137, 0.4443, 0.3520,
+         0.3285]])
+>>> brier_score.p_value() # default: bootstrap permutation test, two-sided
+tensor([1.0000, 0.7860, 1.0000, 0.3840, 1.0000, 1.0000, 0.3840, 1.0000, 0.7000,
+        0.2380])
+
+
+
+ +
+
+__call__(estimate: Tensor, event: Tensor, time: Tensor, new_time: Tensor | None = None, weight: Tensor | None = None, weight_new_time: Tensor | None = None, instate: bool = True) Tensor#
+

Compute the Brier Score.

+
+
Parameters:
+
    +
  • estimate (torch.Tensor) – Estimated probability of remaining event-free (i.e., survival function). +Can be of shape = (n_samples, n_samples) if subject-specific survival is evaluated at time, +or of shape = (n_samples, n_times) if subject-specific survival is evaluated at new_time.

  • +
  • event (torch.Tensor, boolean) – Event indicator of size n_samples (= True if event occured)

  • +
  • time (torch.Tensor, float) – Time-to-event or censoring of size n_samples.

  • +
  • new_time (torch.Tensor, float, optional) – Time points at which to evaluate the Brier score of size n_times. +Defaults to unique time.

  • +
  • weight (torch.Tensor, optional) – Optional sample weight evaluated at time of size n_samples. +Defaults to 1.

  • +
  • weight_new_time (torch.tensor, optional) – Optional sample weight evaluated at new_time of size n_times. +Defaults to 1.

  • +
+
+
Returns:
+

Brier score evaluated at new_time.

+
+
Return type:
+

torch.Tensor

+
+
+
+

Note

+

The function evaluates the time-dependent Brier score at time \(t \in \{t_1, \cdots, t_T\}\) (argument new_time).

+

For each subject \(i \in \{1, \cdots, N\}\), denote \(X_i\) as the survival time and \(D_i\) as the +censoring time. Survival data consist of the event indicator, \(\delta_i=(X_i\leq D_i)\) +(argument event) and the time-to-event or censoring, \(T_i = \min(\{ X_i,D_i \})\) +(argument time).

+

The survival function, of subject \(i\) +is specified through \(S_i: [0, \infty) \rightarrow [0,1]\). +The argument estimate is the estimated survival function. If new_time is specified, it should be of +shape = (N,T) (\((i,k)\) th element is \(\hat{S}_i(t_k)\)); if new_time is not specified, +it should be of shape = (N,N) (\((i,j)\) th element is \(\hat{S}_i(T_j)\)).

+

The time-dependent Brier score [GSSS99] at time \(t\) is the mean squared error of the event status

+
+\[BS(t) = \mathbb{E}\left[\left(1\left(X > t\right) - \hat{S}(t)\right)^2\right]\]
+

The default Brier score estimate is

+
+\[\hat{BS}(t) = \frac{1}{n}\sum_i 1(T_i \leq t, \delta_i = 1) (0 - \hat{S}_i(t))^2 + 1(T_1 > t) (1- \hat{S}_i(t))^2\]
+

To account for the fact that the event time are censored, the +inverse probability weighting technique can be used. In this context, +each subject associated with time +\(t\) is weighted by the inverse probability of censoring \(\omega(t) = 1 / \hat{D}(t)\), where +\(\hat{D}(t)\) is the Kaplan-Meier estimate of the censoring distribution, \(P(D>t)\). +The censoring-adjusted Brier score is

+
+\[\hat{BS}(t) = \frac{1}{n}\sum_i \omega(T_i) 1(T_i \leq t, \delta_i = 1) (0 - \hat{S}_i(t))^2 + \omega(t) 1(T_1 > t) (1- \hat{S}_i(t))^2\]
+

The censoring-adjusted Brier score can be obtained by specifying the argument +weight, the weights evaluated at each time (\(\omega(T_1), \cdots, \omega(T_N)\)). +If new_time is specified, the argument weight_new_time +should also be specified accordingly, the weights evaluated at each new_time +(\(\omega(t_1), \cdots, \omega(t_K)\)). +In the context of train/test split, the weights should be derived from the censoring distribution estimated in the training data.

+
+

Examples

+
>>> from torchsurv.stats.ipcw import get_ipcw
+>>> _ = torch.manual_seed(52)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.rand((n,len(time)))
+>>> brier_score = BrierScore()
+>>> brier_score(estimate, event, time)
+tensor([0.2463, 0.2740, 0.3899, 0.1964, 0.3608, 0.2821, 0.1932, 0.2978, 0.1950,
+        0.1668])
+>>> ipcw = get_ipcw(event, time) # ipcw at time
+>>> brier_score(estimate, event, time, weight=ipcw) # censoring-adjusted brier-score
+tensor([0.2463, 0.2740, 0.4282, 0.2163, 0.4465, 0.3826, 0.2630, 0.3888, 0.2219,
+        0.1882])
+>>> new_time = torch.unique(torch.randint(low=5, high=time.max().int(), size=(n*2,)).float())
+>>> ipcw_new_time = get_ipcw(event, time, new_time) # ipcw at new_time
+>>> estimate = torch.rand((n,len(new_time)))
+>>> brier_score(estimate, event, time, new_time, ipcw, ipcw_new_time) # censoring-adjusted brier-score at new time
+tensor([0.4036, 0.3014, 0.2517, 0.3947, 0.4200, 0.3908, 0.3766, 0.3737, 0.3596,
+        0.2088, 0.4922, 0.3237, 0.2255, 0.1841, 0.3029, 0.6919, 0.2357, 0.3507,
+        0.4364, 0.3312])
+
+
+

References

+
+
+
+[GSSS99] +(1,2) +

Erika Graf, Claudia Schmoor, Willi Sauerbrei, and Martin Schumacher. Assessment and comparison of prognostic classification schemes for survival data. Statistics in Medicine, 18(17–18):2529–2545, September 1999.

+
+
+
+
+ +
+
+integral()#
+

Compute the integrated Brier Score.

+
+
Returns:
+

Integrated Brier Score.

+
+
Return type:
+

torch.Tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(52)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.rand((n,len(time)))
+>>> brier_score = BrierScore()
+>>> brier_score(estimate, event, time)
+tensor([0.2463, 0.2740, 0.3899, 0.1964, 0.3608, 0.2821, 0.1932, 0.2978, 0.1950,
+        0.1668])
+>>> brier_score.integral() # integrated brier score
+tensor(0.2862)
+
+
+
+

Note

+

The integrated Brier score is the integral of the time-dependent Brier score over the interval +\([t_1, t_2]\), where \(t_1 = \min\left(\{T_i\}_{i = 1, \cdots, N}\right)\) and \(t_2 = \max\left(\{T_i\}_{i = 1, \cdots, N}\right)\). +It is defined by [GSSS99]

+
+\[\hat{IBS} = \int_{t_1}^{t_2} \hat{BS}(t) dW(t)\]
+

where \(W(t) = t / t_2\).

+

The integral is estimated with the trapzoidal rule.

+
+
+ +
+
+confidence_interval(method: str = 'parametric', alpha: float = 0.05, alternative: str = 'two_sided', n_bootstraps: int = 999) Tensor#
+

Compute the confidence interval of the Brier Score.

+

This function calculates either the pointwise confidence interval or the bootstrap +confidence interval for the Brier Score. The pointwise confidence interval is computed +assuming that the Brier score is normally distributed and using empirical standard errors. +The bootstrap confidence interval is constructed based on the distribution of bootstrap samples.

+
+
Parameters:
+
    +
  • method (str) – Method for computing confidence interval. Defaults to “parametric”. +Must be one of the following: “parametric”, “bootstrap”.

  • +
  • alpha (float) – Significance level. Defaults to 0.05.

  • +
  • alternative (str) – Alternative hypothesis. Defaults to “two_sided”. +Must be one of the following: “two_sided”, “greater”, “less”.

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if method is not “bootstrap”.

  • +
+
+
Returns:
+

Lower and upper bounds of the confidence interval.

+
+
Return type:
+

torch.Tensor([lower,upper])

+
+
+

Examples

+
>>> _ = torch.manual_seed(52)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.rand((n,len(time)))
+>>> brier_score = BrierScore()
+>>> brier_score(estimate, event, time)
+tensor([0.2463, 0.2740, 0.3899, 0.1964, 0.3608, 0.2821, 0.1932, 0.2978, 0.1950,
+        0.1668])
+>>> brier_score.confidence_interval() # default: parametric, two-sided
+tensor([[0.1061, 0.0604, 0.2360, 0.0533, 0.1252, 0.0795, 0.0000, 0.1512, 0.0381,
+         0.0051],
+        [0.3866, 0.4876, 0.5437, 0.3394, 0.5965, 0.4847, 0.4137, 0.4443, 0.3520,
+         0.3285]])
+>>> brier_score.confidence_interval(method = "bootstrap", alternative = "greater")
+tensor([[0.1455, 0.1155, 0.2741, 0.0903, 0.1985, 0.1323, 0.0245, 0.1938, 0.0788,
+         0.0440],
+        [1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000,
+         1.0000]])
+
+
+
+ +
+
+p_value(method: str = 'bootstrap', alternative: str = 'two_sided', n_bootstraps: int = 999, null_value: float = None) Tensor#
+

Perform a one-sample hypothesis test on the Brier score.

+

This function calculates either the pointwise p-value or the bootstrap p-value +for testing the null hypothesis that the estimated brier score is equal to +bs0, where bs0 is the brier score that would be expected if the survival model +was not providing accurate predictions beyond +random chance. The pointwise p-value is computed assuming that the +Brier score is normally distributed and using the empirical standard errors. +To obtain the pointwise p-value, the Brier score under the null, bs0, must +be provided. +The bootstrap p-value is derived by permuting survival function’s predictions +to estimate the the sampling distribution under the null hypothesis.

+
+
Parameters:
+
    +
  • method (str) – Method for computing p-value. Defaults to “bootstrap”. +Must be one of the following: “parametric”, “bootstrap”.

  • +
  • alternative (str) – Alternative hypothesis. Defaults to “two_sided”. +Must be one of the following: “two_sided” (Brier score is not equal to bs0), +“greater” (Brier score is greater than bs0), “less” (Brier score is less than bs0).

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if `method` is not “bootstrap”.

  • +
  • null_value (float) – The Brier score expected if the survival model was not +providing accurate predictions beyond what would be beyond +by random chance alone, i.e., bs0.

  • +
+
+
Returns:
+

p-value of the statistical test.

+
+
Return type:
+

torch.Tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(52)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> new_time = torch.unique(time)
+>>> estimate = torch.rand((n,len(new_time)))
+>>> brier_score = BrierScore()
+>>> brier_score(estimate, event, time, new_time)
+tensor([0.3465, 0.5310, 0.4222, 0.4582, 0.3601, 0.3395, 0.2285, 0.1975, 0.3120,
+        0.3883])
+>>> brier_score.p_value() # Default: bootstrap, two_sided
+tensor([1.0000, 0.0560, 1.0000, 1.0000, 1.0000, 1.0000, 0.8320, 0.8620, 1.0000,
+        1.0000])
+>>> brier_score.p_value(method = "parametric", alternative = "less", null_value = 0.3) # H0: bs = 0.3, Ha: bs < 0.3
+tensor([0.7130, 0.9964, 0.8658, 0.8935, 0.6900, 0.6630, 0.1277, 0.1128, 0.5383,
+        0.8041])
+
+
+
+ +
+
+compare(other, method: str = 'parametric', n_bootstraps: int = 999) tensor#
+

Compare two Brier scores.

+

This function compares two Brier scores computed on the +same data with different risk scores. The statistical hypotheses are +formulated as follows, null hypothesis: brierscore1 = brierscore2 and alternative +hypothesis: brierscore1 < brierscore2. +The statistical test is either a Student t-test for paired samples or a two-sample bootstrap test. +The Student t-test for paired samples assumes that the Brier Scores are normally distributed +and uses the Brier scores’ empirical standard errors.

+
+
Parameters:
+
    +
  • other (BrierScore) – Another instance of the BrierScore class representing brierscore2.

  • +
  • method (str) – Statistical test used to perform the hypothesis test. Defaults to “parametric”. +Must be one of the following: “parametric”, “bootstrap”.

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if method is not “bootstrap”.

  • +
+
+
Returns:
+

p-value of the statistical test.

+
+
Return type:
+

torch.tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(52)
+>>> n = 10
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> brier_score = BrierScore()
+>>> brier_score(torch.rand((n,len(time))), event, time)
+tensor([0.2463, 0.2740, 0.3899, 0.1964, 0.3608, 0.2821, 0.1932, 0.2978, 0.1950,
+        0.1668])
+>>> brier_score2 = BrierScore()
+>>> brier_score2(torch.rand((n,len(time))), event, time)
+tensor([0.4136, 0.2750, 0.3002, 0.2826, 0.2030, 0.2643, 0.2525, 0.2964, 0.1804,
+        0.3109])
+>>> brier_score.compare(brier_score2) # default: parametric
+tensor([0.1793, 0.4972, 0.7105, 0.1985, 0.9254, 0.5591, 0.3455, 0.5060, 0.5437,
+        0.0674])
+>>> brier_score.compare(brier_score2, method = "bootstrap")
+tensor([0.1360, 0.5030, 0.7310, 0.2090, 0.8630, 0.5490, 0.3120, 0.5110, 0.5460,
+        0.1030])
+
+
+
+ +
+ +
+ + +
+ + + + + + + + +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/torchsurv.metrics.cindex.html b/_autosummary/torchsurv.metrics.cindex.html new file mode 100644 index 0000000..892c1da --- /dev/null +++ b/_autosummary/torchsurv.metrics.cindex.html @@ -0,0 +1,765 @@ + + + + + + + + + + + torchsurv.metrics.cindex — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + +
+ +
+

torchsurv.metrics.cindex#

+

Classes

+ + + + + + +

ConcordanceIndex([tied_tol, checks])

Compute the Concordance Index (C-index) for survival models.

+
+
+class torchsurv.metrics.cindex.ConcordanceIndex(tied_tol: float = 1e-08, checks: bool = True)#
+

Compute the Concordance Index (C-index) for survival models.

+
+
+__init__(tied_tol: float = 1e-08, checks: bool = True) dict#
+

Initialize a ConcordanceIndex for survival class model evaluation.

+
+
Parameters:
+
    +
  • tied_tol (float) – Tolerance for tied risk scores. +Defaults to 1e-8.

  • +
  • checks (bool) – Whether to perform input format checks. +Enabling checks can help catch potential issues in the input data. +Defaults to True.

  • +
+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 64
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> cindex = ConcordanceIndex()
+>>> cindex(estimate, event, time)
+tensor(0.5337)
+>>> cindex.confidence_interval() # default: Noether, two_sided
+tensor([0.3251, 0.7423])
+>>> cindex.p_value(method='bootstrap', alternative='greater')
+tensor(0.2620)
+
+
+
+ +
+
+__call__(estimate: Tensor, event: Tensor, time: Tensor, weight: Tensor | None = None, tmax: Tensor | None = None, instate: bool = True) Tensor#
+

Compute the Concordance Index (C-index).

+

The concordance index is the probability that a model correctly predicts +which of two comparable samples will experience an event first based on their +estimated risk scores.

+
+
Parameters:
+
    +
  • estimate (torch.Tensor) – Estimated risk of event occurrence (i.e., risk score). +Can be of shape = (n_samples,) if subject-specific risk score is time-independent, +or of shape = (n_samples, n_samples) if subject-specific risk score is evaluated at time.

  • +
  • event (torch.Tensor, boolean) – Event indicator of size n_samples (= True if event occured).

  • +
  • time (torch.Tensor, float) – Time-to-event or censoring of size n_samples.

  • +
  • weight (torch.Tensor, optional) – Optional sample weight of size n_samples. Defaults to 1.

  • +
  • tmax (torch.Tensor, optional) – Truncation time. Defaults to None. +tmax should be chosen such that the probability of +being censored after time tmax is non-zero. If tmax is None, no truncation +is performed.

  • +
  • instate (bool) – Whether to create/overwrite internal attributes states. +Defaults to True.

  • +
+
+
Returns:
+

Concordance-index

+
+
Return type:
+

torch.Tensor

+
+
+
+

Note

+

The concordance index provides a global assessment of a fitted survival model over the entire observational +period rather than focussing on the prediction for a fixed time (e.g., 10-year mortality). +It is recommended to use AUC instead of the concordance index for such time-dependent predictions, as +AUC is proper in this context, while the concordance index is not [BKG18].

+

For each subject \(i \in \{1, \cdots, N\}\), denote \(X_i\) as the survival time and \(D_i\) as the +censoring time. Survival data consist of the event indicator, \(\delta_i=(X_i\leq D_i)\) +(argument event) and the time-to-event or censoring, \(T_i = \min(\{ X_i,D_i \})\) +(argument time).

+

The risk score measures the risk (or a proxy thereof) that a subject has an event. +The function accepts time-dependent risk score and time-independent risk score. The time-dependent risk score +of subject \(i\) is specified through a function \(q_i: [0, \infty) \rightarrow \mathbb{R}\). +The time-independent risk score of subject \(i\) is specified by a constant \(q_i\). +The argument estimate is the estimated risk score. +For time-dependent risk score, the argument estimate should be a tensor of shape = (N,N) +(\((i,j)\) th element is \(\hat{q}_i(T_j)\)). For time-independent risk score, the argument estimate +should be a tensor of size N (\(i\) th element is \(\hat{q}_i\)).

+

For a pair \((i,j)\), we say that the pair is comparable if the event of \(i\) has occured before +the event of \(j\), i.e., \(X_i < X_j\). Given that the pair is comparable, we say that the pair is +concordant if \(q_i(X_i) > q_j(X_i)\).

+

The concordance index measures the probability that, for a pair of randomly selected comparable samples, +the one that experiences an event first has a higher risk. The concordance index is defined as

+
+\[C = p(q_i(X_i) > q_j(X_i) \: | \: X_i < X_j)\]
+

The default concordance index estimate is the popular nonparametric estimation proposed by Harrell et al. [HLM96]

+
+\[\hat{C} = \frac{\sum_i\sum_j \delta_i \: I(T_i < T_j)\left(I \left( \hat{q}_i(T_i) > \hat{q}_j(T_i) \right) + \frac{1}{2} I\left(\hat{q}_i(T_i) = \hat{q}_j(T_i)\right)\right)}{\sum_i\sum_j \delta_i\: I\left(T_i < T_j\right)}\]
+

When the event time are censored, the Harrell’s concordance index converges to an association measure that +involves the censoring distribution. +To address this shortcoming, Uno et al. [UCP+11] proposed to employ the +inverse probability weighting technique. In this context, each subject with event time at +\(t\) is weighted by the inverse probability of censoring \(\omega(t) = 1 / \hat{D}(t)\), where +\(\hat{D}(t)\) is the Kaplan-Meier estimate of the censoring distribution, \(P(D>t)\). +Let \(\omega(T_i)\) be the weight associated with subject time \(i\) (argument weight). +The concordance index estimate with weight is,

+
+\[\hat{C} = \frac{\sum_i\sum_j \delta_i \: \omega(T_i)^2 \: I(T_i < T_j)\left(I \left( \hat{q}_i(T_i) > \hat{q}_j(T_i) \right) + \frac{1}{2} I\left(\hat{q}_i(T_i) = \hat{q}_j(T_i)\right)\right)}{\sum_i\sum_j \delta_i \: \omega(T_i)^2\: I\left(T_i < T_j\right)}\]
+

In the context of train/test split, the weights should be derived from the censoring distribution estimated in the training data. +Specifically, the censoring distribution is estimated using the training set and then evaluated at the subject time within the test set.

+
+

Examples

+
>>> from torchsurv.stats.ipcw import get_ipcw
+>>> _ = torch.manual_seed(42)
+>>> n = 64
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> cindex = ConcordanceIndex()
+>>> cindex(estimate, event, time) # Harrell's c-index
+tensor(0.5337)
+>>> ipcw = get_ipcw(event, time) # ipcw at subject time
+>>> cindex(estimate, event, time, weight=ipcw) # Uno's c-index
+tensor(0.5453)
+
+
+

References

+
+
+
+[BKG18] +

Paul Blanche, Michael W Kattan, and Thomas A Gerds. The c-index is not proper for the evaluation of $t$-year predicted risks. Biostatistics, 20(2):347–357, February 2018.

+
+
+[HLM96] +

Frank E. Harrell, Kerry L. Lee, and Daniel B. Mark. Multivariable prognostic models: issues in developing models, evaluating assumptions and adequacy, and measuring and reducing errorss. Statistics in Medicine, 15(4):361–387, February 1996.

+
+
+[UCP+11] +

Hajime Uno, Tianxi Cai, Michael J. Pencina, Ralph B. D’Agostino, and L. J. Wei. On the c‐statistics for evaluating overall adequacy of risk prediction procedures with censored survival data. Statistics in Medicine, 30(10):1105–1117, January 2011.

+
+
+
+
+ +
+
+confidence_interval(method: str = 'noether', alpha: float = 0.05, alternative: str = 'two_sided', n_bootstraps: int = 999) Tensor#
+

Compute the confidence interval of the Concordance index.

+

This function calculates either the pointwise confidence interval or the bootstrap +confidence interval for the concordance index. The pointwise confidence interval is computed +assuming that the concordance index is normally distributed and using the standard error estimated with either the Noether or +the conservative method [PDAgostino04]. +The bootstrap confidence interval is constructed based on the distribution of bootstrap samples.

+
+
Parameters:
+
    +
  • method (str) – Method for computing confidence interval. Defaults to “noether”. +Must be one of the following: “noether”, “conservative”, “bootstrap”.

  • +
  • alpha (float) – Significance level. Defaults to 0.05.

  • +
  • alternative (str) – Alternative hypothesis. Defaults to “two_sided”. +Must be one of the following: “two_sided”, “greater”, “less”.

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if method is not “bootstrap”.

  • +
+
+
Returns:
+

Lower and upper bounds of the confidence interval.

+
+
Return type:
+

torch.Tensor([lower,upper])

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 64
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> cindex = ConcordanceIndex()
+>>> cindex(estimate, event, time)
+tensor(0.5337)
+>>> cindex.confidence_interval() # default: Noether, two_sided
+tensor([0.3251, 0.7423])
+>>> cindex.confidence_interval(method="bootstrap", alternative="greater")
+tensor([0.4459, 1.0000])
+>>> cindex.confidence_interval(method="conservative", alternative="less")
+tensor([0.0000, 0.7558])
+
+
+

References

+
+
+
+[PDAgostino04] +(1,2,3) +

Michael J. Pencina and Ralph B. D’Agostino. Overall c as a measure of discrimination in survival analysis: model specific population value and confidence interval estimation. Statistics in Medicine, 23(13):2109–2123, June 2004.

+
+
+
+
+ +
+
+p_value(method: str = 'noether', alternative: str = 'two_sided', n_bootstraps: int = 999) Tensor#
+

Perform one-sample hypothesis test on the Concordance index.

+

This function calculates either the pointwise p-value or the bootstrap p-value +for testing the null hypothesis that the concordance index is equal to 0.5. +The pointwise p-value is computed assuming that the concordance index is normally distributed and using the +standard error estimated using the Noether’s method [PDAgostino04]. +The bootstrap p-value is derived by permuting risk predictions to estimate +the sampling distribution under the null hypothesis.

+
+
Parameters:
+
    +
  • method (str) – Method for computing p-value. Defaults to “noether”. +Must be one of the following: “noether”, “bootstrap”.

  • +
  • alternative (str) – Alternative hypothesis. Defaults to “two_sided”. +Must be one of the following: “two_sided” (concordance index is not equal to 0.5), +“greater” (concordance index is greater than 0.5), “less” (concordance index is less than 0.5).

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if method is not “bootstrap”.

  • +
+
+
Returns:
+

p-value of statistical test.

+
+
Return type:
+

torch.Tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 64
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> estimate = torch.randn((n,))
+>>> cindex = ConcordanceIndex()
+>>> cindex(estimate, event, time)
+tensor(0.5337)
+>>> cindex.p_value() # default: Noether, two_sided
+tensor(0.7516)
+>>> cindex.p_value(method="bootstrap", alternative="greater")
+tensor(0.2620)
+
+
+
+ +
+
+compare(other, method: str = 'noether', n_bootstraps: int = 999) tensor#
+

Compare two Concordance indices.

+

This function compares two concordance indices computed on the +same data with different risk scores. The statistical hypotheses are +formulated as follows, null hypothesis: cindex1 = cindex2 and alternative +hypothesis: cindex1 > cindex2. +The statistical test is either a Student t-test for dependent samples or +a two-sample bootstrap test. The Student t-test assumes that the concordance index is normally distributed +and uses standard errors estimated with the Noether’s method [PDAgostino04].

+
+
Parameters:
+
    +
  • other (ConcordanceIndex) – Another instance of the ConcordanceIndex class representing cindex2.

  • +
  • method (str) – Statistical test used to perform the hypothesis test. Defaults to “noether”. +Must be one of the following: “noether”, “bootstrap”.

  • +
  • n_bootstraps (int) – Number of bootstrap samples. Defaults to 999. +Ignored if method is not “bootstrap”.

  • +
+
+
Returns:
+

p-value of the statistical test.

+
+
Return type:
+

torch.tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 64
+>>> time = torch.randint(low=5, high=250, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> cindex1 = ConcordanceIndex()
+>>> cindex1(torch.randn((n,)), event, time)
+tensor(0.5337)
+>>> cindex2 = ConcordanceIndex()
+>>> cindex2(torch.randn((n,)), event, time)
+tensor(0.5047)
+>>> cindex1.compare(cindex2) # default: Noether
+tensor(0.4267)
+>>> cindex1.compare(cindex2, method = "bootstrap")
+tensor(0.3620)
+
+
+
+ +
+ +
+ + +
+ + + + + + + + +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/torchsurv.stats.ipcw.html b/_autosummary/torchsurv.stats.ipcw.html new file mode 100644 index 0000000..39ea395 --- /dev/null +++ b/_autosummary/torchsurv.stats.ipcw.html @@ -0,0 +1,502 @@ + + + + + + + + + + + torchsurv.stats.ipcw — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + +
+

torchsurv.stats.ipcw

+ +
+
+ +
+

Contents

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

torchsurv.stats.ipcw#

+

Functions

+ + + + + + +

get_ipcw(event, time[, new_time, checks])

Calculate the inverse probability censoring weights (IPCW).

+
+
+torchsurv.stats.ipcw.get_ipcw(event: tensor, time: tensor, new_time: tensor | None = None, checks: bool = True) Tensor#
+

Calculate the inverse probability censoring weights (IPCW).

+
+
Parameters:
+
    +
  • event (torch.Tensor, boolean) – Event indicator of size n_samples (= True if event occured).

  • +
  • time (torch.Tensor, float) – Time-to-event or censoring of size n_samples.

  • +
  • new_time (torch.Tensor, float, optional) – New time at which to evaluate the IPCW. +Defaults to time.

  • +
  • checks (bool) – Whether to perform input format checks. +Enabling checks can help catch potential issues in the input data. +Defaults to True.

  • +
+
+
Returns:
+

IPCW evaluated at new_time.

+
+
Return type:
+

torch.Tensor

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 5
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> time = torch.randint(low=1, high=100, size=(n,)).float()
+>>> new_time = torch.randint(low=1, high=100, size=(n*2,))
+>>> get_ipcw(event, time) # ipcw evaluated at time
+tensor([1.8750, 1.2500, 3.7500, 0.0000, 1.2500])
+>>> get_ipcw(event, time, new_time) # ipcw evaluated at new_time
+tensor([1.8750, 1.8750, 3.7500, 3.7500, 0.0000, 1.2500, 0.0000, 1.2500, 1.2500,
+        1.2500])
+
+
+
+

Note

+

The inverse probability of censoring weight at time \(t\) is defined by

+
+\[\omega(t) = 1 / \hat{D}(t),\]
+

where \(\hat{D}(t)\) is the Kaplan-Meier estimate of the censoring distribution, \(P(D>t)\).

+
+
+ +
+ + +
+ + + + + + + + +
+ + + +
+ + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/torchsurv.stats.kaplan_meier.html b/_autosummary/torchsurv.stats.kaplan_meier.html new file mode 100644 index 0000000..ad7c986 --- /dev/null +++ b/_autosummary/torchsurv.stats.kaplan_meier.html @@ -0,0 +1,584 @@ + + + + + + + + + + + torchsurv.stats.kaplan_meier — torchsurv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+
+
+
+ + + + +
+
+ + + +
+ + + + + + + + + + + + + +
+ +
+ + + +
+ +
+
+ +
+
+ +
+ +
+ +
+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + +
+ +
+

torchsurv.stats.kaplan_meier#

+

Classes

+ + + + + + +

KaplanMeierEstimator()

Kaplan-Meier estimate of survival or censoring distribution for right-censored data [KM58].

+
+
+class torchsurv.stats.kaplan_meier.KaplanMeierEstimator#
+

Kaplan-Meier estimate of survival or censoring distribution for right-censored data [KM58].

+
+
+__call__(event: tensor, time: tensor, censoring_dist: bool = False, check: bool = True)#
+

Initialize Kaplan Meier estimator.

+
+
Parameters:
+
    +
  • event (torch.tensor, bool) – Event indicator of size n_samples (= True if event occured).

  • +
  • time (torch.tensor, float) – Time-to-event or censoring of size n_samples.

  • +
  • censoring_dist (bool, optional) – If False, returns the Kaplan-Meier estimate of the survival distribution. +If True, returns the Kaplan-Meier estimate of the censoring distribution. +Defaults to False.

  • +
  • check (bool) – Whether to perform input format checks. +Enabling checks can help catch potential issues in the input data. +Defaults to True.

  • +
+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 32
+>>> time = torch.randint(low=0, high=8, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> s = KaplanMeierEstimator() # estimate survival distribution
+>>> s(event, time)
+>>> s.km_est
+tensor([1.0000, 1.0000, 0.8214, 0.7143, 0.6391, 0.6391, 0.5113, 0.2556])
+>>> c = KaplanMeierEstimator() # estimate censoring distribution
+>>> c(event, time, censoring_dist = True)
+>>> c.km_est
+tensor([0.9688, 0.8750, 0.8750, 0.8312, 0.6357, 0.4890, 0.3667, 0.0000])
+
+
+

References:

+
+
+
+[KM58] +(1,2,3) +

E. L. Kaplan and Paul Meier. Nonparametric estimation from incomplete observations. Journal of the American Statistical Association, 53(282):457–481, June 1958.

+
+
+
+
+ +
+
+plot_km(ax=None, **kwargs)#
+

Plot the Kaplan-Meier estimate of the survival distribution.

+
+
Parameters:
+
    +
  • ax (matplotlib.axes.Axes, optional) – The axes to plot the Kaplan-Meier estimate. +If None, a new figure and axes are created. +Defaults to None.

  • +
  • **kwargs – Additional keyword arguments to pass to the plot function.

  • +
+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 32
+>>> time = torch.randint(low=0, high=8, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> km = KaplanMeierEstimator()
+>>> km(event, time)
+>>> km.plot_km()
+
+
+
+ +
+
+predict(new_time: Tensor) Tensor#
+

Predicts the Kaplan-Meier estimate on new time points. +If the new time points do not match any times used to fit, the left-limit is used.

+
+
Parameters:
+

new_time (torch.tensor) – New time points at which to predict the Kaplan-Meier estimate.

+
+
Returns:
+

Kaplan-Meier estimate evaluated at new_time.

+
+
+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 8
+>>> time = torch.randint(low=1, high=10, size=(n * 4,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n * 4,)).bool()
+>>> km = KaplanMeierEstimator()
+>>> km(event, time)
+>>> km.predict(torch.randint(low=0, high=10, size=(n,))) # predict survival distribution
+tensor([1.0000, 0.9062, 0.8700, 1.0000, 0.9062, 0.9062, 0.4386, 0.0000])
+
+
+
+ +
+
+print_survival_table()#
+

Prints the survival table with the unique times and Kaplan-Meier estimates.

+

Examples

+
>>> _ = torch.manual_seed(42)
+>>> n = 32
+>>> time = torch.randint(low=0, high=8, size=(n,)).float()
+>>> event = torch.randint(low=0, high=2, size=(n,)).bool()
+>>> s = KaplanMeierEstimator()
+
+
+
+ +
+ +
+ + +
+ + + + + + + + +
+ + + + + + +
+
+ + +
+ + +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_images/benchmark_auc.png b/_images/benchmark_auc.png new file mode 100644 index 0000000000000000000000000000000000000000..e8740c6c3934af86a6dcbfe5ecc3f0454cd0ad95 GIT binary patch literal 36103 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 B9?he9wUwH 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 F|3BPMkEZ|t literal 0 HcmV?d00001 diff --git a/_images/benchmark_brier_score.png b/_images/benchmark_brier_score.png new file mode 100644 index 0000000000000000000000000000000000000000..07283abd2f140e7a76276859b47dee3e6826559b GIT binary patch literal 35803 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 JUY0t+lm4X9gvEryz`FN?GM+>IkE)3r03&kb-6 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 literal 0 HcmV?d00001 diff --git a/_images/benchmark_cox.png b/_images/benchmark_cox.png new file mode 100644 index 0000000000000000000000000000000000000000..f804fb5ee695c36e5845b3af6d60977cdaccaaf9 GIT binary patch literal 90190 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
sy2xEB3)^<5>0){OE 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 d>#6_kDlhI#*^+ttQ`+F^19umefj_Z literal 0 HcmV?d00001 diff --git a/_images/benchmark_harrell_cindex.png b/_images/benchmark_harrell_cindex.png new file mode 100644 index 0000000000000000000000000000000000000000..99c81fe3b7d91e070855e0a195f1c25caf27c94e GIT binary patch literal 15530 zcmcJ$2RzsR-!A?^sH~(yLTUIKktCanvXYW5JDDMSWHdxlQi)_Vh|KIwsO*u9ip=bl zovd@c``wT8|DSW8^SJN(od5sv`1bALlh1p+Ue9qouj_iM{+1AQ*udBJEla;-luz;Ar z5&pfF&dv@_5`uzP|NAcp*gIMXie%&@<04xe6m^|QBnA`W4_TsYf)$A*#jGTMQo}uJ z@`s1JYR9_lucaD?qe?gHxo+*HP&MV-!Vj zTwLlTDhWo$Q1T{i>6w z!TaIUC+pfP^$}!Y%JG_lVqz?ejEp-w#VK+1#3$*#N~30b{MSktN7?WsNjX+u-k8h{ zH3$~6$(vu9eE}m^ zc>dgMr1_?}av}P8s)Kr0L>0dMPO>V^dRdFE20W z$?rRdn_@d!3*4qT&fMQkX<=cJ*kv_|)G{u^SF70Ui^-^|sUspH-nX^wyhY8>{(b0MmIdSP-9dUe*5$3OJ5(c& zm5;S0=j1+K68ZQ&$7ZHca{B$ZZ>)z79m;ne-R{?wZbUpSo`{o^6Yu(_+2eQbEr#YK zO}^GN12!!!Ez9;4)~A9-^o*aAhNq?;U?a^s(hP`C>+9=#CnxXkJ z4E0hnyfxXG_gd-kA*}Gp63>MrUW*f_miBY$wj#%<=Mwh z^pqLl_bC0uBqdc=7AFTg?aRV`6uGIGn!ft*;X|Na>QmRr?=^Sm*#2ITk#QgC@?dRP z?%>g*>Wfo9_=;R7A9>6T)daH&2VD)1jO4}I z?V_Qfc_!}kW_A9H+UyUvo|>;2W(N-)IwLRN^5x6NrY1Fhe*Vjg6W=numh7G#zZ%KH z%BqAH$;qWY(e>j;ym{Tz%xeQ@zGavNY@(*Vhx=YCy{>z4y7lcv_19ld6^U6DPN1aE`-wg?2W(-BFs60NTnmu-Xp-tQL>ea*h_U(K0`0>Swab^w!Vl^4IQ zH;Axd=H}+EX>8mT+CuHQH1#7M(f+ZWr@sD~FjnDPRzkJJJ!ZjOBw`m+XPaaGrpENjl|$Ib zmM794v+~61pe8(a8g9IM>(;GJNI{gFjDfxV3RCl!Y}!-GKfhL>S?e@%A~j8#5ukmeS`G72h{J7ZoyoPfE?o#fop+w(b1L zx`gY*W*ZxuhH+W%Kh9kxUd(y+J?%-IaY{`2g@x7}&m$u%zI?eTd}gnkU1y#>11D!J zS5^Mi&f~@NEh?5Rad+E$P7gOm)1Awxb=TCqt@a-B z6_{RWxy!_D+W+CMf9^6$u`|a-lWwnRX&oJ%UKF76{*U)eEG+}kkFT#U5BoomZHkt3 z%f9*ch}(3x|LfOgH{#DOE-oH9db9$mlT&-u)^@9H<%bXQ!U0RuJqoU_$H&@JSGv}A z9dAOGewNxuS#_CMq z@81I_O+~=ol3BeARmgqnMc3jzU2O z28Prsy4}Z4pmM)M$`voP>wjF=-&b3CBEd1syl$72&niog?}l_&SJ$z@gmcln**@3C zo#$jNY;0)uiaMiA7+A6i3Z`#g)Oj8n%6RB(gx?mXL%rp?!q|wRA$weH6xj``SXs=OoSKS#}Z+y{uz` z<6~y3ruE?iTsno$R?qS#2M7Jp1N-MkzYx*#QntxQN>59~rd=MnbHsDrva85VZCvqK znSeoIFOoIz?p>bDa{=`1zYsL!eNWwT-SLBRt1Oy4N`T3iH>w{wZn%y#lOY8oNxrUS zsAleiVcJ1ILJ)XSQBg#srV6*E8ckYq-EW^89BR`x^4ClK1Q2!u)w~av z)5*5HP_U*j-?OpKY*6TY5~>O9o(vRbZHznGw6zzv=kZ?;39=mqtEQ2$sxm*UPpf zla!PsY6$@Dt>@3#b|1IZxmliAzW@+gM*4=`NA{o@XC| z;4v$|Nx7MUK|x)8`*m;cYrlF=UZ1Vu9zpre=qY11pXw^G?94q3B?Ovf>|kLw5Hlq*@haU?~zeZ8UL&f&G%XoxY873@MfI4K1!TP z(rrrK*m&=ov(LzljEtm!fRR8Ix3@46un{lVS2SHJhhO*i6vO>d^f{m#eq!k#wcK zapMM2wUw2((sM{{#yyElbzl801cVXbxiDtZSK)s?xs51%0Oxo1$=!J}`h`A;%J3(v zhep9*^kB@!M4uGU0iT2GuMpYwf7aL6O|7kY8yg#Er;4U)(FbXwTsU^@IDk+Qc-K&z z)m8Sp|K6!3k3aKPqaEq7m@e*RWMqg*NGK~R2J#yg>s(C8wkT*q10*LW|Ips91(<=# zUi;3Z@&FId+pn%%T!^Xg46~}B2IA-I6USWL_gNlCC90^$?9aRHxuj}j5Y0p-KCGy$%po3*+k0hkCmS1^YV3Y4uIyZop?cQQ&#wb? z^!4xQrS9_e^-VSR;o5kf1$4Aiq77)ZNE?0kJg!ytC0**eea%OSG8K=9@nW-rH74?da> zV!))TG5AaJKQ+WY`BQOJTwFZgW9|^p@4b@S+(=XD*uY*i?8J)+^t80fKE(!OC(1nL zuH29m!#`g5h88Hh^hVyF$K}PafvBXoI4jUf{Ey)N%U7?0nWS^B!VLd~(E&z@}oDAv){o#DJh*^G&=e|)`s~9T{P}nQC+=REk+7yv3PIlT+aCz zCp%kPS~QV5}`@mnFqM ze}8wjqN}@`1LaneYp;`|BMS8X*2D|1HJCYGKH^IkXJ(9xkMCQY>?D!6xf5o`UQrRF zdGy4Dt!hN)*RRDRQzQHsfLU2tkBEqvztDa-8|8$ePI`}eVq$M^G{spqCwLRzD4xbf zHW)dmB^K7KJpWSV!A9IZH>sj(B98yh>T@$t5Md`g3w_3!!gk>viV7;>@*u%bw4C&mIAXKQVRZYpJ*%td)y_4hx{a#a70pVh zPord_#u&-4?LTdTi;upqrwzPICMD&^ryazwP<*7!@nD|M*|T;lwWx>#r`=wj*Bm65 z4cqzm<^lpIY;9*=#>m#2nK^Za1)ys50vG>o@?ED0Q>F}4_K%A@fI)`yuzv3CyLY#s zMIG^&y?oi+-0C~11+)4Hp@<_U146`w<>qwa)lFvl zKcY|g`}K_a@`ZW3_A;a=B7r#;I9?%(~TAgjl+LZ`3H0lc9jTNJ={A&~_ zwb zMc`oEXB!KPPQTFUGiSJt9ovCHr2JQ3<>xYAU-{Fgt=e?+?AZ14?C2O6LLRBhA6) z(tCYv+SlyQ{AlF8m&YudNtl3IY;9_v@SwS!adyrglIe+wiP2k0)=b_t)D+7AT;=ZN z^%`aFYmu8E(d&RI%E1=_h6bQv0^l`gTYcFcV)fpSj77pZap)Q*459-jYo}KJY)I|?As;va4(mZ-9=-SN24KQQpQ(8VTop@C>zuN6WZ*8aGt>fYOR zIQu)W>Q*%1FSk8Rc8l7jxQGa2Vr+<40ez&IUr zhleM!5Yhc`G1m`wZ*1Le-JG_KLh0H$f6%pCFwz5=( z_Ukayf104#wrtrVv0w%ofynP$7Zc9)fj-m8xwQlaCGEAV zudh#{CpZrD;O5Pn-=nQR3=8uILlXU6(+y?q)pp(q+eJUWVL>ZC2D4AW#Pqsb#Cj7T zAJI4P?qZHVH?OX(%?v%aH~sp~BtpW)I-?U9;v^P=L)!E9ix+#3*>~^3gmQRMa>1f4 zMVE;fHBOy6)jKe73#^XW+Mfl>u6!XdVDKuYm^RXVU34} zfo4(R--u8niyYkC6f`t6PP-M=6A3TjnBjWT*4;MaZ?md2>oYYt=Vn0$_%8dtr-u`C z9Gc5X#N5p988gxeOvYeh6Ew>ZD9{0#rCiZn6ga(a2L^5iU^Dv=$Y}YaP~?zWOiJ4n z(B+Zi$3Ok$ztv)8KE^3M?(Od`Ap{Br2{@m;7!AUX(| z8+{LRCtnm;(XZk`4<4MsV7;|#RX$$5{PSl=83I1wP5$yXtGZ1n7>h6k)iocWP zr0v&tWMBq2Z{12xqUDfc`TY6w-&*kdw>tnmYDz1KM07xdBG-?g7=tl6nPKwPDZMT( z^Jip#>Kb^o-QY5b#P0T4xk}6+Bb|AI7yumlKWrf;eWH--=|yT4x%GH6XIV56qzxca z2v}?`Vd1RmnYGzEL1LWFaQX!zF9j8sw6*K-J0N!AsxiO$|b$ zW+nPk5z&(gHUj*k`)7l%| zNV;^s)&uEAm-&$kWP7#KF7eDSqvo(mx~6F9T3ROF4hXQ}C@LsW!oZz9)>Z1Qk4fYw zz{BS!Id(tvy1kbS7#Wom6}OQxLC~FAk_4MEGduezDr%4Fx0{qSaga71MMtNO>Z7QN zG+CIN6Wxb)_c6tbPai$vBK<_?=ivx!7}qVuY-3WKk?|%qXUwX`cpk+>8uL6JO5RS82{B9)a|og z-S2)-KlgiOW&c0_Y{p1O>;}OJfw&8Ims}1poSc{-MojBc(Q{|de!vjGxN8>`Nz7$z z2WWc{h4JN&RaLKD#@mTR&&2%Ri~RycQ~0JH%=}ytYPzkhZSVMaGLMsk1EK?qWU~U& zynWRW8j-t)$37XE((0M`gal^KSTCZ{qS=Ght^yB6L_gvx|AchbhHpvtYU~aTSE6yK zBbm#;Z|Em$<}Pluj~zq@-_}*^Axuy+SkgYQYIi`0K%yWcVMwQx@e!POZAC+KkKEkE z#N;=69)^s&c<7gyw0|uvQU5CQ;|mJ3^!G4iC8f@;a$Zf=;7!deE-d61sVgh9`1bw# zu0Ln0-oGb->GI3V6J1|!@-=OKagrc_Xj+RPQu%d>N@#9DjZA#>>bbg=BbhIn&#XJn)S853QAx! zX5BLAZengzT~2wDKCA9gGTwT^z8(P4_fQ@y+S_yIqkaAgn806~^5x_hMziBm`F&O< zML|bXqX<@lFaJgGKqzg$W@gApw{PDzMuq)a>Me=sJA@#IL9$3(?F9aN`SK-EBv3*K z2Dia!YHAA1OBLpT3}hUJV=mM#Hc`7xq~P5mTQL~B1EpMBU-ei;^$o=64%Xw?`1?9j zKwtt|63>Y;3jvB~)2G{~y9$KCS^Vyr)YH{9LBYazT0Mmwfij#ytJklkSt2M7Mu@7F zEhwp&SY%P>Z<2CT!ZfL?+lLGySRpBCX(5*}4dV4cK9P}V*(G)Wp0G%{AGvw+=J|9( zX%Ibz!;=C2{(S^p*OA74$-p2dMnBt<5fJ$nUbwuolWqT*;AZ}CCs)@`;P)MVRx=`T z1{y?rJ^gO4{AqWDQTDF>Cxq~7_{?^;una6HTSO z;=KFFdj~bIdkdy_dHUxh47Zp^7YH!N?pyQPSX=5F8oDzvF|j>I7>%sM$T#(09Y2wm zO_cuE{A$lY|0!wT2rti}T<+*Ni#Pi(s|KD^`7#^eSsl5}u&(5$E_xzH2gr^57m7mn zD^!eo*a!3RP)S_S41f4*^}HZ|y~}T((DkbNue6WJ54}7&NhOggOrV<_He>boamrqY zmumSTb#vVW`&2rTrm^LWU?GLP2L1N!*>aMCt#jcNv~x#UK40HN^@pxiJjx)&;MdA? z0sx%?08-@HDyc4d)HEVI>(L$I$|&Bg6w!)GvjKmyxHk#a-`#-$FYefuEhpBQZqU-P z4#{t=I>D{JTTpOvzti5OYdfW#!ULTv@zJAI?)TDOacOlDE}o_H+XZC#th`^To4#P; zIgPloFdr>F7ae0is{X!-L9u=2lu%7g!9ut|n|;}O8Bl_0`ZdFEXP+OZ!xprz_@MH> z0Czmr%2P5m3~u0ER#qjrvH8N-R{%XvUgXDH6{cKF7*<1gi{aP_o;L^DI(K?Ypkw_@>vNziY)CKWmWaE+m{|clY${ z2PCiLOD|S8?g3o;$no}!g2HRGNj>xO@^Tj8E3}|dZxKF$PoJnTYqWKJcSeEuwXksb zT`FdDVsecTGNaN;H@wg3^P3Fd2>)R?i1b9GK1nG_=PDTa>C`|3~bpI(MkX9UZsm#X!?f)_^{U{>hpR$ehB7U8B zCpcuT|HH+FTC;ukZeFeeH{L8XZGReO>+hm=T{=|sd;UQwa75w$mVfOvdY`hqJcyQ$ z5Ta~+2^}8utrbT=K!D2q-6EH<^^S`Zy5del!N7iJNY(Kw;l~zGF!@Lapx!lKBNPP< z-muj_XAR-Bcn}92Xm|eOm#v8V-aB1B;_$CJPG-2x5g}SE2VE<_%K@Kf%wy zDf0wKvBoC7JQxu( z9S4<#goPgu)`iA?@LJ-Xsmm_5c*^Nxj7-Dl%QAnJM7dtH3YE!Z4>SpN;r3I>-=eusjo zX<1&lbZUfl>AyQ}-KxmfOijNh(L;utTVY~y(j4GaZxZM`y)D6FX7R1OM)9L=k^64C zd_}9AWqDSw^FqG;d&H&JTlBrhXN7L#ca`ir&joA3YoOPp8gYb-AfkxDE|y16jkv7etmrTS{z#sUa_ZXC+EgMa{DAe2+jj>Oh86V7--y9J zC}0R3)o6$emFS;*S}FfHw0wuV;}?Xb7vPehd7Xsy;aJbYZWb2H(&Wa+P~l!M?Ao=9 zvX+XL#gB$rp!dUFCKxH?K+gVInl}0=2D*^!g$DP71Y;Q#{T(xgN_iTBph{OjCi)X&*qQaLZw%}$SC#Zx zR{?M%ge~ZSQSN}F>jV2&1x5;-$ZO3e(AZE9#eCPLy4?rpz{Kv8mSzY0a?;k8AJbWo zTmXF^IM&Eq1b@EMFg+A-e{>H*Py1Tnl+fr6H;$aM^D#jE+fe^@>30AYvrD@2Z+k&{ z7!?%^1_?$2GQ4UPaKwGo2J1Ffnd@RuP2R!IK+c&*lwB|@3a3tyuOmiI$(sLDFF9R& ztHf)mALIB36h|Tf2(pst(Anm<-Z9zP$M&GzfCl8fP&7+0+PrTop1z^nB;||O{oleo zp7R};hKaXz8luGvYiw-n2dr+2x$)QhygaH;Gt&L~uX1V<2^KH@OZnSqcJcdRz9xt= zi1cG!c^K;Zp_D4BsC*f%5I|#>cXoEZ5t0m@FL-|5IotNzc5s!SV1P2{wRWUqJ1&3X z1PQh=!X=hE3{*!ZC@7e1`I#KbwV3nB!*gr)u!kMD>k1qhu_T-d5i;Hq1T_uB8~uHF z89ZF?*jNzkQ(=h)1^=|Ybsls$9;2=~DD0bjw9)Hha;=l$o2)K^YYI{6$jr(TvACq| zf+E%e88lUR=GM)dm*LWo$XS@5e}XN1wfD>~iw7kmo+HgIr10EnjXt-1g(? zn?Zk1!`}h7No5;p)pcc0{jqG|>Qq`km6wxY#MjBZyv4dLDLx@4>_JJ1^dZ&A`HICR zLX7Z##(Km`ed@lJscB5vvBQF`a;F?Sh3aF+ztv^$I=xj_`Ah-9*c9#-B4-ghzvSS0 ztuItulf@?hB>nb-bQX8SHMb#gHT9Rn&oYiam)RKl9V*GFDT%oX!ydtG1IfP7N~XEA zn02(arsm|CGgPQ}mBb^wDPoMy!58Wc~s1zi~xFlC_xx^d*BTO&ggk)n6m>Ks<677j1#s#38bKS@&KD#lD?2p`ngBrlC%mKo z2X@o{@GCsck&kWW^H#;Z}br!rd`a z+*thX{BTa!-6R35%1tS+!>$JH&xRRX4C|s3$B2apmfxzibSZUCVlKb$n$8a=kpt@U zUBX-~Xe*)QVe^X56^7(BIT0%VcXr|baR2_D9EvRaFPoD8YhT&=&MW{LyHm5Rk%)&Lvr)o1c}a=`Xc6*vtFjD&*)9bD_0Q9sxJeEslSb?QHW$7Cd^0`WgK!5A<&_p471 z41IWhw6gND)?TRYqW0alp-*b?YFZtCsrWC`!AXG0l#~?1e|KGGMycz+w}HyJapPo7 z8Kd9=W8sY(WU$ofe;*10LHp6yL69_D(toXyk7KyFU$ZqTe5hKAK`jWblKbpQQre92HVa!x&VhXO1aVbmf2s{;e$#t^p?wbMBWlE2u)X%Be7 z>Ou^*K&F&Fg!e^r8r&O;wC6F%>BiR9TY+8B^5uHu-X5J78YZk#AU_EQdVl{-NC||Q z>ko%=*o8;p)P9)M`$6mlz)W@a?Ah}mSYd8CmD~unJpj~c`G*giFlbhw11^Z)=6zc{ z>^<5NPtalL<^Hfsy)>(O0G>UtG~hz~$bh}H8la#C?@owd@c}Wi0p~N|uOn=+;E;J? z@p=sW7X)4!9YOR8jM$%#incKe9~Ya&mEx*|-l?Rdv8U zAHILrOEW4nWRy#q$8vgL1pe^tn=W)sZZMsmdrtSUj5HCZGs1n8Qwx>Z9CD6-dlOAK zNI2$#hST?U-NnFu`SRr_7TP=IIGto*^}}HNnfLh-lbeKRw|-6Y=A*`CkgFeYGx$vP ze;!|180SteS&Y=u#j?fwZmgS6zdJQz);(8OTe}^!xNeE3%dcV`kR2?R=y9yrQON3%i8#dm!2Dm`?b&U>~>- zlD-l+jd0n?EdOMJTR41$C26;Jg9ns|YfzFK6hc6wlw*Ww23bGLeqyIaq<9bU?QF{% zx>;AsaZm#GfC#Z`Tu@I$T;f0mIEY$CDR~nEj?&nd|23` z@pg1HJ1miJ^44Y5-lh*4vJ+Z#bz|clxSX{LZr!3FY?_vAkoO5#3R5s~)+57pQqLK# zN94d}TG~wy*$x5IL*}j|NLXmo!5q@Nfnb583%jc{pN-lyVk1J}uzP{E-o^-|)t8#r zT>-D)g3O!Rv|~;_gS9*NNV#u&^X3gPJYotFB&caPmA+iha|chh{c2X>=Z@lGQJ7V5 z#^E)Beo*F4(itNspONN$g!uz2+_JPS=;Miwlj}t_cNIh3BIagiZ-$454_(6rLNN)! zaBWj@5CsS{8G(kOmk{|3p@PZi`poGZhIy$$>0!JS!J%b1^qqoFd~3LXK?Tk?^!@yK z8+$xzzgJUHX-Ene0l9VI!iC7^N(4kFj(b2q!buvf{;OKreleXL~qqsa^A%J%kMckbMw>@N6$GY#)0i~EabYx#ad zWIq-Xjf(QuCMBo(EF^>hyWt-kOqf zo-5PH%*H=q z4SWbvK?R;hb0{d067VZ+#}u+Wk=1lSM#fNPWkOg$zfOU34xaN^I3k}C#~5r_htXa6 z{_Tck%q~wQDGaDFBX1KG6}^z$){>$t{H@HlY^dPZFNZB#x3);Z;Mhc*m?4~@Fi}6k z$(UL!4UH{KF6YobaBk;Ne_!7|PT$px_QKJzwBlhYVd0B7?Dq2QaDP7+hz?%YxB4y@ zAHh=xk}w=89t0@RnyRl2YxrI(D=R%0P!9(PA0`+JP?CD~ng3{eG!=o4B>nS?iIr9N zH^COVu|1gD7($Ld?%D*;X=qwtTNSyEEeGA{o4iAQL ztczT{dLO8%on3rfNh!dGVXaVswlOi?B1Ct0yN^LTaSCAz80{w7#x8WQcM%7u?9gL%N#FdZYKmc6xf3NJ7YyUla3nXtA5HCc!pbqxoBn^wW;{lvX zx(%K&wRPnz3N$)0s5-h;XzF6_zxG+hc2|6%;DL3BgKE5S7=jUw;Qy>r#=c zYBGbo#xhIE2>rGTpV2lMw{7!-t@Q;garxJmkJ9fE^8=r@Us94S)_allxb0Uzh=#qe zi@5)p=fN2-<&v_2s*r(}cold9TX}tFe{KO|eW|@~TPO!0K5qd`;U>rzop;7$T4|TI zAV!Ia0rrb5RDYElkkwv7y2KM8*{P>d;PW}OmG5rWcza}Xe9FYI~v3;pO5=+)aHA!?zWAY|l}m4k+6z;%a$ zDfQ?=iV&NO9`G(Rv!&-nU}D#dr1LA~G@vblOe9V?5G?`NmE?!bF@{%zU^}m0mm*Z= zejv|}c6QxssbnFF!5EWczNhK94GBkoY3OIP2Rq9rype=cCZidx(T^X=n!H= zY~_JhM=|JVk|FCWk^P@D%oM<1kduH4?ts^O2|jK!J^h{6ulEDLX->F8U!j0a5DbPX za1pV=aHEPeA+rWhs&2qRhVxl;fSZJTiqlL|rdS`1M;kOEa2+K%!ukLI{bAYv-L$d6 aAb)JZrEbnt0_TQFN~h1sr=2ps`QHHWo+8iy literal 0 HcmV?d00001 diff --git a/_images/benchmark_uno_cindex.png b/_images/benchmark_uno_cindex.png new file mode 100644 index 0000000000000000000000000000000000000000..32f8c44713bd23afc75c6b3255950a08065c7332 GIT binary patch literal 16950 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 literal 0 HcmV?d00001 diff --git a/_images/benchmark_weibull.png b/_images/benchmark_weibull.png new file mode 100644 index 0000000000000000000000000000000000000000..30712e6806bc25c0f62e8840f508884a8644b46f GIT binary patch literal 77086 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
Q zWtEQYO;q}^4xSaQb8qK>fEk4GBPnNR5qQ7E=MEP*IlsP)c^J+2Dc-Xriu{Db>TNpz z<0Jm(@!%F&pvPwUkFgW8HtZp5qR6VDTSt+5SO4!!OqgW%2+&lwCZqXbNa64I&>|*Z zNw|QZ!uxGw!vFCZoM$;2z}BX^`)-2i&ldbzL43-y{9dC6)6pElU$uVEJfLxwCJ{~d zPsu^pLwJh+`0=dFI>84OP~d)lEy2i!>f6@JCguGy`~LAJgC{+-b$x-~%nghi62FWa ze-^zf1vFBkKv_?!A4SR$e=-_^G)9p;emS)^-r~Wn5(aSZ$gYFD?IE#tS)7A2{fr+l zXWqM|3I3VO_^9cc*8O)Iuzza1HJ@)}fbzGpDqT*BVVJxS`^dZh_|cWB zse3;`LNF@|Dk!)JFQCaBca5lN@~Ew?^@8e!&FW$PWqpL?1G&mDavBZSENuw(#Ez1P z1jH}@S8xR?-xmal7AT1%hiGYo+qi209Y{z?ld~d)toD?!@TcKBt0A=l5s>E84GJwJ z?q#q*@d5h+UW1r#XT4$E{_>3*`*)d0|Hov~{|*9vhfFG)`zI*rbBl{6xD}|>FM@-; zq3i=My$4wU&|4@D2E)2TIU!d}t^NM}8epwRCId8+qV#(vC6z`=LBXii-lgO}LXOKU z;|_(E6%i5?V?J>J5d+#Lj0nL1c~ZUXY)^i+b3`uy9Ls?+BG^Y{zQT)xq9p+HcEE)E zuOffa!MQt;BGf<Njk8sY<;h#Fs#yii4h8c*h? zg8m~mackV!@xUl2X%wouU3~cU5C%z%$O4BcL9Zv8?#gcK90QU74k#@Q8m57%0omfu zpQl3a5O{lAF?*MYm{=DEx`3>`1TWkHH)fhnrLX=2OmmD@ajPFurozdSp4kq|eSW@p zW-TN3zE=x}9eEPPWgDkh52kP3mBZAgib;M(PNzIHaCEnr=SD;H?5CmGeMoA6N|sq? zFX4F-_c)M^`WR6rPwOX#@2Ecfu9m7}T}`YXRcpU~O>o#JiZSiVN-iBj@3|1QpGt6u z2I>@src)0XDBW>B{?3o~QG`Xx&gNJ&p}9G3)yOc-(~p|gYLTIZc-?hj%yLp|=-Bj+ zO212%mdkw&(ZudSX`xla3{#43?-wh_oz)pN>8{F@^u}j7w|1>LwK}{@xN~RH#GQF;IDDX$;c)F7K{{ z+z)Qw%5UKl;_!RM=wD8*B|xO~1KGJ)n*zo5DSP4{PvZj1FVmdAFS7dTTw!AP$Y37N zWT2k{?WB0s;Vxpi(R4>aO5spJG0#eB+wj(u(CKUidlkv}G~(khZ}P9I9c?se^3C8u z+c7`Ali8%Srm4fD_>Jm@jwk7zPd25`-f9l%<_^~U;^gkkqV*Ze`Szq5g9#Hs0{2CY z#lEz*D_z9t!(DFArwJ8KP3EsT+R&;bYedeih8OZC2n$ZrZHXz-CKr4Cv!3>aB*&G0 z7);?7 z8k>6BX7R<%zfZ}UVIzIoYs&4R#gI%UdHTcl`;wBayMbK7g4;rpb)t_12jioSE%F^H z>4eiaX5YTe%AXck+};_O9hlO2kUgt2BI)m%v2pC}szF&@+{)#pC^KopZKjX#`EcOz z=G0dTtsr}QUQZJI(GEw>{u>;*XRR>0@q70XCa9^&Fkq=!5a_h&tHZ~5ziiA_2X)PC=zfIkCc|p-dq$dE zo-?={O20V?Q2IC4R2{2rKvU-lc2*eaH)5nOG&0jR%<4A!Pv33l9vmOFznPX59(E+c z`52Rl`J=W%7n5O8TXyxDnsA5zc^%f7WEnp{Pjd3$v%WDYGgYN{iT24o959B+yne1L zv~h#g7a==UgRT^q`6iuG@ywJC+lVe6BPZGc-Z` zI_l?uF8l#*mfKL(;7vl=owHyQeijr|4ZehaFcJeDrv-GZ;`;wiG&%+betBhcl`xKb zgd2a$JW3-f>Cv*Ng+>3|z|&O|c1;V%p}8XgLWep&E?+8+;)A(E6gKJ4Ttux0u1uQ+ z9A$VZ`l9H3b_q7*ZlvdiJLP%&G01f3(7_{@56pNT7ZWRNUDR}2rbf09^o|^M_Wg*) zWp)~-1ots+!bauoP z%giKZLqcBRbuPJ>{m4r;GL!jP>t8?y>rbd`c3XNzV7mER>-K zV}mLA@<&7q5MP^_e>Xon+2a#T*I+zh20fxd0(>BfLAy)w632l_gLjWaiFo4vZ)5LX z80k^KDkAzo8D3h5c@IQ#d%gn?u)$5k1Tdh&YTPH}dGb3Y{sJZ-rwx~eZsHYBh8bn@ z?9YF08xFvVas}A4(K|KqLqHS!o>@=q0>}$a*k@Z?uE1a*W)B2{Op&`V-VT#3a_};> z#g!)jVS`(g4^_Ux0f^namt5Ht1taLMM|7w?C{=3aJVO+*TY={3OZ?Jakr51GMI&d1&~u#PB6#j%7CjD z*pnw9VYL~Xza>)LH0c{_LpN^q{_8J<@z)+~+{>-Bwy`DpA(v+wDtU>c$ zMAIxYB${}r8K*1J9!dQt!$1-Fod^GIpV}xTegY#IK`0@hXJEhv1kufEF~_-MAd>n3 z;DYxl{6D7tVQ~_xp8S*K=KlvaVLV{sxVbbW{%*3V@di zG{boWi&($j$7JE~W$V_i9YHcY!R7HPGBv=YmbENDE8*%YdTvjW=cS<*N zwjpl*%pTgS`1*ybtV-E8zmiHeGNmub^pPRGHk5#0FpEf;8*8v-5hi%yZ-Cq>9H z7{RODSMe#k-2WT!FSubxQFK_ zawK-x0{(_UyXNy;iP9$@1L z+XnX>zudklQ0J{8hDG-mz;#KgB?b?G_e4I5wi&*voH-rAxS}-+2#BKG%c&%?irdmO zQH3dnBWmq>s{f@+Cus?K31_@VPaRGnad1a@rXB77mfL?1)LSYZ$3&w{)w*OTp#f!c zQ6N0rhS*S~fr5LS2O|#JE?XyJ=#~f3@~mBVF_JbL2~EKc3YRwf_+NUcB(J_GSoB0mKn0 zg}uE!-mA?u?im!wu^grw4p2qJC{AzeohDk~>RNMG+D|7(kI-n&H78_l4JLKzOc|m^ z?BF<0tbda3LbYWILJ0_^tDjq}0SMz?>@lowiD#M*Ds9ZDYgrJNgd4)`Zm&mnO{27R zIMaR|$#~$CJ~fE*eB^&A99GE@#e}$Ii@v(*YFKYm@Xg2k2W0*Oq>uYWml>O9yBL=?nZHDC}9n2yOj%m#--Pif|#7#`O~(!~1}I!Y6hEa|s8CKV|t&exm;+WE&WIJXZHGk`vJovJZ~) zO`VGG9Jw85FxV_eYmoz%kIW$og@iglKQs5)9YW2XO|0rKq!PHES>R7FK)1ZDg7?N9eThp>SJob_bkfhRu__VC1= zkbC~u z>1G)yvZ&TS`HNoqA^ldB4%1PX^Q?@XGzPWmn~RmJsrSAaCLKnZyVMwYg1H7&yA( zCo$CB@ko0?oHlV16NL+0bSGChHWI-x5k!*$+y_@N<$eC9#O!XMU8}*v+Gbe6da_eF zoxIsgg7`y|O+b1ee;4pl(DxER1%dSbJ1aE*gA+dfH!La3EKAz;d zFStBf*DjNb;mECp-G}|dwNPG*+&`7Hfya;CS&&q9+xi6bKAv>F&(D5E*LCf)t_Nhe zs9~wng+_dDR@_~?Dv4_&nRNz2!|1KIv)+A^4xBf>pT`w4)FbdPLsYP~Y)<;-2kID> zvR^nX5j2In%3h(=(G0kFgT+R2MY4a+KWtv2a67@vl1|84Z#k`=JM2l{W<5sM#q@dE zlb&Az0Y6(NaSZ$0hI|8CCf%r9+Dq`0LGPKab3{Y@h(XCS5qgva$9hcE#GU*F=~>Wt z8X)@1z@wf0fX%UQNDilHYn5AcDDVh0W4~VMi7a9_)3`v4Qol7ZIp5?upR9p6cRCb! z771;bQILp&OYs+isLu^JVv&iu4YC=E7g|f=gY`LeDi7JQsfeQ^(L=;s3#)T!q+=tb zE3iZiVzCgL$M*7&ej_?M8i+l#RdpRCCI!ACnBq>NygqD3418rc^xx36EaE%$u0B^D zlB-l$9MQ@{N=9Pv3GYhxZINve5O0u$33JAfMIgwV874Nwr&!;e!u=8oviC(xACrV? zn5Qk1-lkoW!*WaI)R*B09VN;(Vh};#o-MB#PWmed zlhLh(n3ndI{e&xx(1%g9saqu>G$T@x5gqYO^yIXaWX5AD?wes~TAOS?&_=Uqv{?t* zJKIn$uK+^Gf*AxK(C<1LkYUF-%g#ZM^2afj1TyNJ073-uS4-X7vZ-3mSmiN_7DM+cd}NbuS#+eld^4OM8prPrG~AhwV~OM4>jtQavw z${4Md1KPynexiElU}hj!7W5=;$9xDljoNbHUq2@&^^7v9W% z#A&u^Va@%3c-XK$WLk})>Fv%)k6FvoJ*KN*+S}U8IhEavCSQ&@mD9$jQUc^ta7f88 z4o)+4=v}v#{SrzL=N$qxn{96lnoT;)(MgRTNEH1% zqqF-kj0#(u3_wMEYAx<2Kd?LcKu7p+w{f2{d{7A)hYM2X?D@m@bA+xjNGSa`pkmgkeW)JAt|ipU+FFDH??lA&Ubrz% zV$2AB43iWu5#K(1=!G1v{=QyPlS!z^_9aM;GDEyC@yWp9#7iNOq$FJn21tp$bd^NS za=KQahsUe?b9OT$yO!A zNd6Vh9VpNuX^SD&BrGjV&Wzb+ebB!e)YyxZnb)hKXe4QGCl@IJ+jZE z-7AKGas+o;?IEGu@E1Z6_Yw(n_b|)v!s$pHlN2x55Rt`M*enUNWV0jW`}2?vkx6?N z1DzR8M+H=K8|n=VkIqN+RWMuvG)yVKVZ*PiBm-kG4)~-R=0}~LztB?KNsdm5Bop!4 zDn_ix`Tk>x*|YN+Z>y;cghJR=d=TT%p)A_--i&e^uIp{o-rtq+|7OArdWEFwRgg)L zG*H+MV1}bW&7k}35{s&$8u@$a+2W=2oXtOK8YFeylk3f_sy>=NSF&Y+UH7iRpa~uR zT$k?wJj;;62t(A1Z<>S#P!UqlYSqDG_@~kPCj>b{X+3P@cf4 z4jqaabQ<_56#*M#%uB&~kd<8(T6^A{Q>r+z|G$_u>5@ia>j=!60Q9%BDal5rM;0MN z3C=O>JDIxVFADjkn4)2+ak`CY{n3CAUAeXvsvHe>-UZqVBv_VPXg>KW<<)BgpV<`*iq z`#Iv+c=E%UM%VfgJs$?*X-cv66iZL$UTUGe)!DZrCl8|v&Lf~Me2G6XBbv!L*Bmt1 zTF;flm^D}hj)zZp8IJKK=iguws)di94qhRb@>9S6Yg9rK=#-=m$p(-6e}HP)zr=wl zi@KmY_Q(o_Ud~nDSbBuL%4=GnGh-^xK}iZo`Y5+`>dy%d zKppfj=a*G`Tk|Vj%)8pPNuCjmHY(Pgfx5Q{GB<3fO8Lj4X%FeVsji4e3_>mt$%ul$ z6FR9^@K`MS3|Y9YxZ!Ve_~P zdS%*5r6FDnur(Q%O}*dXHCT)oT@sf98wLjjnHuzUC-8e2IURJ1=+c%|z30n_xr$qr zL$=9Kmv=gbqUw?FB>5`D(-VRD5M-xL=pO`z>h&%E84N5r?RGQ5C3`+Y(r5<6Xo{>` zdbZt*+Xq10-GzZ>7Xlrq?`G95QM%a2Ybmdz&IFXs)_NfjKE^L7h&#;fsGm4c;ymIF z<(an33@+E^?)|+zah|6C8(!?v^nn2HsDRWAF6hbOJ?gf+J4e;ieq~Y&H&dCfX^D@* zYPO>!uo}1{0TxPO@E|Go#0lvSmk7lB6xz}}_%aZmL#qO2H3QOq#C*Xcu})Wa5;o{r zIk#d<5j5kd`*#~Hz#$C?7R^(h*e=U-GvNNAS5#%KvEsdgnS~VH`dc20?VqnCKLYiI z5-%eJnrsdJ-?q}jDwq16vztmcqdWJueu%_14JiFbjG9DuW+UH*Wcq<+eTDH+2pR=Y zz&@LE+zfI`V5A{Q=|1d*mNjG!mR^$>Js^O5+M%-SU{pj1GVm-c-s;-@jHv!`64la; z6kRS;ZyUndxbu3$B&^=p0&s@nMfM57^oW42aM_@gW99WY>te;B*%4vv7T)XQlH-uR zeSD&5#Z+yCa410|Nwn^`niMM6M=|s9*8dWmzO>;-?ATAPLel6+N;EPz1PRSSmiQpU zlEfy!6NF$1k{cr%WI0JZCYJy{lJ_BY!X5ym52il%SP-&UXL4atERq8Z>ng#YB3daN z(`q>tl8irKK0HA&4@Xv5w=oO$MH%PyDjhE7+d_#t`@ zo5vly-MhjEx(*BPrNfW%3UE^hc<+E56AlWo^8reZTl)^tfNb=g-APOi4d2NW@)2xk zUFL;daNe*=zJ^Qa$Q`p)CjhvPZt#HtkJ z|2=&4Xc(n)zwF~`4@;fL1#>u096fq9pmnT2UE}525!&Y7;@i;b$Xzu|Oq#fm4(Q z(I*?#XKyH;9^0C9VC{dCRs$|UYy&J!<`0-heAwJ zF35i1KOE@^oc_8V^9W9#@nC`ME$~mb5ibj+$66qll;KxX)O>3!QaKp&*`eAMC z>cZ@A>ZkHqZ~|TpViKE#g5H$^Nioe1e9?@^I#n;Ybq%eU?J!?C z<9L=4abuA{RCFa*vztY3B+VhqJ|ZpfU5#wV@|LlZDJ0MW!A1f|oK7{Y>>+{Fh-*9y zeNT17RJ?CtlPyB=A6Phu${Cy~$Pz)La+(xe*z+k~h<>5RbpBXH^E6_r2{1C&KCz89 z=bJhKLQZYNr%iSzk^D%amUga13-PkC@#u~A>;x0nTSI^(-G)cb4tyvNQkBn;{RxN2 z=7Bcit4CzQjx%#=#MrmB$vM$=X=7-6peAPIR4Qla&KNyv)IGFosXL1KNIDUP7{8-1q7ro+*%Q|DDgjZN36`xq%;W*^@?T4wqU1?UQxZ;BVv*hp3zcFG+<_9(H2;*Qkkd2h$o zX$%42q7x=9f%}=%7r5_oJp22|!AYDTB!lSq6*Cxyv%r4i^5X(Jt!asKyL5CuV~0QR ztib`W>EfbcfM)@WCU<>DNj#+yvChEm1agC{tm35iknO|&hd@rtSPp&43)~iv3AziY zF6ZCUBNNuEy_$(Na-ZnHmEN=_3S39*Wh?U&SeHkm)DZ2EdEumlJ6HcVqGLytggZ1^pY&M%7i%%yP^59 zpP-H`mt%!{Qi=TU2iy~CVqh>83`j-3{~ZMwBQ}q<75DE3e|+iEB|{c%9Uz~bc%I1S zUy_pi^6gu1z*-5aA$QEiw(N80aWAi-UHi3n<_9>L4b#YV2Y31xji&DksVVtwc(>0PkRvCHpkTzNcW(-M5HZ-W$m!x`;B_KJUpBuGI845A7 z?ze=)P5=7t*(ed%9(vBt??`8-6Ind?#)F)A`z75eE%246xV64~c>ofoZSZjF*79(! zxgc%&ht6>W4_BO=wibzWXYsSf)uMJT-v50MbO{yGB>9^qnlrxtAAbIm$bbOtGz=67 zQA}Z62+~=jtudi%_*RgM?D&@A9b?R3JWgE8Q?+(sdA&d!TXI3%N-KU0jnJsh3l3_P zV?~2T$ETm&)i0lFLDMh_B!XxC{i91VL`6ibyGmRjr}b(craXD_4ejS)d<;Disp~d4 zUkJd{IUkr3WG?d-EFkX=9i^nfk+BryElFL_WRwI}>Ku$q4U+XThi4S481Eu%$vQqu z93ccYJC}C7>O>MLt4nkM39vgiG+h(KW7bxmYbuaao9pQr@@>P>yG(qibQ3Ab0QG*qL#me|Ay z%|IS`nSIIKvGy6_(dyrM)I&+vxQv)@BSl-+NS+?zpG&6TG8$Fva*twZ?!|5Lre-8p)z!a25yz@{evBmc2$RegxMQ*THIJm3wvpXs5EH$|R7}z^oU2T{ z$$J3QrTdw^ftEI!I;6<4V3DOqLOi4TA_+Hv4MNN`lTXtSKq!wTGv)ODO{+_aM~l%! zT$7-Z#DsorZh_?b@l3>M5b-4->XQf;Bw;+zC6E*&KtNm|LuVq`5;r))W7nZ8K>9M- zJA(`&3I)FOqrg$fPEth59E)=Xqi~X7dIU zBptzLoQH0>ZRoio!-@Om5zIbd@+qs3(pUU8x4+Mw?1?73hhhDsP{<>AW8$Uu>}DKe;A{FAY){M0nDTbh>?b#&1_ll zIdnR}>B0ftQM^#@57YPd#V50uhCCf44S5Wu7kvTWwnDRT?A}{pq;ft=Hm!Q}+_^EV z_!9Q-)tXa8F|OfWB#W9qVEq_bwnn%(l3fHEtUBWFV5#05b~4ButkxJq8;kV?FhM=Cv5h*F^b-IqBxOvDTU?kQh)4CayB=-dE zlS}`lk_3QWC2%JPvQ!4c022AG(HxOr^B3f>wr6%&zZ|N6nzphM^3e~7{M?G^jI208 z;|Pb!L2_@($QTJ2-*B4#SaVJ|-LCw{sPaHxM%sc5ODE5qQG$+&?8!)I!}v-rY940_ zA4-Df6Sw#JsgZEd@)Q>mHsJa|6=WxV{RKgO&inj!;f*P z3PU9)5=9aWH2w4aOYA|P;r7Lj6kcTAP*y<=3cD`tmd+11hI1<;S!cqTLN?{VF+>ka z!#^kOHi;x6CI=+W70eMhQC@FuDa(v;S8YxhTZ4IZ0w6N7z6nhkd1x+N;GmGr1dxjY zu0piap5f>V=x+{O8ZnO{{|?7Dg@T@bCd~WLYp>t9@h(~3fnYMUPYJyd@Rn_DDDXoY z4UO4aV9#(DNs6nh;qkV+P*)jpS;|4U1gqgmR4S330UJWzb;lebZ}u z`Z;dYo;?rGLfQjLeJeCPWCu2h-@-{nHUk0|Ljd0$MD8Y*to+PQRBCb?`ertw()bzi z*jOwjVs04Mb)~wGHKe;(Nhl+VRBstQfJo*1<;$Q^^YTa)Kw78 zr14f*Y7+hz0z6pif2w5K{}B{C4UwB<*MxIe0s(DlmrLm&mCR)ai}~`ayBXCUK@%P7 zb3Jp5+t5{_H`5IbFs=z2z^RiQ4$Em9k)^S}Hb@SZ&fK(QLYs|hGOfBP{{DH@;_Oc% zd*vD@@*@%LZRnx?xa{&IW))mQHN}7Ci_Xsv%Go@G#|LzYuO)8eFGr^go&9Y{^e<0zsPTdrvRw6?n3r`2n_9zB>Kd7}`n}A!vfZI9Gsr)K86VZFN^JSgNI8j?cHc z$Vld8&bGrhOR+~IaQ!@ApIUC)M-TmIejum)TI#NtOOizoQ<6vqXhgenm2Ap5+bj@V ziAp5E^40BeJRaI|WacJMuJllmSSDA?`T6hZn}^3qnxwh!%dB$=7EoK0%N}8<_cva> zUFbNTtk@=W*OG|wbib^0BYf!Ikpzq}-7QIEv$dk)th{mTo0lK5oLUJs&C{o9i%^mW zNl)WnNwW9Gkd?Z+0?*k4L&fT~w>)Gpgz*Zl^g+BS5tak&w|mbo5I*`)WoA4RQ9Ga_ zVgvlJgpW`!_t*FLd83xRj*Gc`7ohih^nTkg_5sQ#dy&1G6Jp8p<>Rvo^E@P_aE)=e zy1Eu!T+Bh)g~VDC_X~(#|AvdWOIytmEFcU=yM!bXnINYU7JLo{Pu`Mo(YYKoY7>80 zXa{t@NuTVRChSQfpbrta+RF8#h1~`g5lM!ebUp!-^nKaS&kmveB%9kHb66?bb$XL9LcGm3OOi1D;NG&0XhFk1wxXk;TInW4T5GGqR^Tbdru)Mlq``2Mecy^0ehdf;t@eQPmGTD=duGU zl>-k4)lN&JgGRa>?!TR(ztyxQkrNm_DZHuN;SB{Z5K19oP;#Ey89Dnj zD~OGuR1${L-X)_5ZJKLnJU9>Sm!BwI1-F3s=9^OxZJd!U(g?N;o>`JK3yr%H%qB^z zr(0d>>*HeOtm!j^>^Jp+l$W%^y#|1&Vc{4~0cmyybhWW#vE)z^U5^AvcWs}h+-b(@ zmq0A?Y0yE$nXvVEyc`5~zk~>x8l4fka<68{-iqsv7Lda)-y^2#8GsX$1-wmCu*8R} z1<}&)FgD^!^=jTd%72s{`Gg_VL2mb9(!iaVBz_msvJu_kL#+#@^_33gNj0e-gVC)i zv~K4N(i^5?Ik_nu`?2vFW}H88#)khzX+`^5*BrZ zp5~1psjj0I-lR}S=S8*^aGuF)>Ok44*o?;ZCrY&qz_>r>nWbj8DcDI8@tovEl2Fv> zOM(;<^+r^}ZC3`2H5vQn;K|wLkgA*+Xw4w_HS(VKsvR&M9e74sB#FBRr;2$q!B7oz zeTI^jZq2Js*CZwB701Qd5eoEuE-c7a>{aClC;YJzd9caB+0V>c>;~`ky?geMtX0lK z;X2%YnMVMv?&=!*WPc=+o33iJWQv&KjWM)IQ-^fu5Ox9D0TML~iAMa@g4e)RNSZJT z+jyhr+2X)T4<~qgb*aBNAEzrN@V}mN$paBkTG*lcU8e;$V4@#iC9|@|Y8?f&+lXG-u z{AjZrTFYLK8Z(CMR0C@Ien5Odc61;q32b>7#20Dodo@#c6Y8%Y;__(8qD3jX;iW>J z-^Y>2G%|n@uooaC@?>Zdi1 zu5K~XVRBmuY@MiJy^`H6U;EJ_2uDA5WK6=Ydy=ex;gO8@FLA#eOh`z`HibzL*6$Rs zR)8gDVD}jEVN+|~viBw}tr$WrrlvISURYOBJS+JZ(%d*wZ_KbZB|~N|UFW{ZD7+K_ zz-MIf)fEH+kWD-!$P&v@#0;+eMZo~N7~7i(o<$-`aCaNC|Ldmj zIZM-*QO9fcp?OQWrED3q8Qou|B4XXCyQl~i`D7RGd)Q@P!`h_5l`?2wpY`Ie*jGYy zA~=Y>A;1I@?TvMUWbm<+xB?Co0mOMw<{>%&(#sTUng~2s9B7HSC?wX8>|sFwc+g5O zlGfd3bb>PlW=PYHPe49w9=&YIOYl~S=vvR>L#eH}HpW~TdCRbB)AFI@hOH`>w$TUp z6+D&qkYjd)n5lnqfu+`=EJUD=(IBwvPCg0zpxcYn>WX%xNk`;h0;VVC?zU!e_1ZOk z-h)>PWP94aJ`nnr8~$;AMO#CTsf6^_H6|j!p-HkhIqgW!$Kl-m{!G^n2aSprq1&M& zd?);+F;;Q)*iZXailoes9|?0#*DQQ^TpQ7EK1V-~GBiB8LuBv#icqV|J6%!}Q^dq0 z?n`_+FFZ16I``(=q9a%4%1g;y8@{{N!os!t)Bc>2miz6kMXlZ+zIl8pDRO zq6>W`0oxuweOh;a$>Ya!v8V~oDJ}Eyp8;avPiu1KQoa@_+}eFMN$icNQk(6E33vM! zXQp{KI(@yd|3*)LzWK!m-uoJ+8yP&*767HqSyPy&6Gv`eTB zS{hZc=IWZ7pzpR08#WxXuFc?lsE5mN$d+6YYYU?)yP!IXzix?OP$gT#$}eU^qIy0d!G`KzTvQZ^2@#6Sxd3ghKAUcamzC39W8;J((x7Mpxl46z ztrkFjKXYu7RE18y;GP5GRvwj?YfYVpNR%*qA73J(iqDbN6uJVq?$-BPIaAVicR#tb zz;muSS(^DsJHc%shL=%_64!)$>vTX{L9*@{yAPr?9)yl+HOQ6; zf`Y2hi20s9y9&+mvfjyDcv&ZQxWKZ#!rf9eAorg*&$zJ4pZ5?hUR+4>?0!{jcbhLM z>4&tFIMO3^G$k*}q*9}xMhwCUphh-SpiX*$r}pD&80)7hkqbA>@slTKA$)Q-?r$j6 z4*jzS(LU)|AQuEEEiXU+0=5faH%_ANm^)i`nD=j5n=31sVaIbe88;BF2kxbcl8mdh z5;uk=Hs7sYgBR)*G-}i+Ajv5r0iU|NqtWO!pDuK2Dm#M4!a3g@^Qkh3(}YJ0#*foL zv^0K)XyysD|A9B3E)WqBzEURI-r6dbVY|$T;nuLBUdVdgx}`WXp|P9F`?X+o#INL*zM-LNfLPzOwk8&6jXVZD^QB#)DU>&&qket^H7&`O_e1lw zr^Cc9$tF&vDj72UF!8;-V#-nFP0hw%Dt821+tu<-HywBya1X|YB++=y47eSo+}B6; ztxsV53>I=*C+;)`o zLjLG2>fdyAaKHU0e_wRKd`rbG?J)sc3RVriQBA+As*JgiWi#fZ-@w!JQ15h2^;Sw@ zQQ$qc&(?{UvBU8?E>04$-qN`1tIWBc0B&o6pAY9lUH_V|uTCz)zwol!LMgmI^efKMbE9uIWS-t$(jymWPQ&PL1y1-pwjq1s=8xGkg)`{{SLJbL^X zTb`$Lj~*Qf4Gx4OfG!s8-nA=i!-Y9uoxv~h@JaY!oUy_SPRIIiKJ4qce*JnWezHw^ z{T}Y{ZkAi|C7y^_bQ+AOq|Kud&ZrVc4j-N;pSiOx2v=_%5=JGa+&0XxojPtD&MR#x zFDmk}vmIV@CYk15Zf$Fe1MlX0{=5SEHgXb_H94iDwfKlf80`q2Ra{<6#NmQQ)O$Tl z44-Gp&Pg&}N7B3{Bf6QNgyhQoF|b%wL~gji=P_sg{A1*)hh46~1^|)-N>stahtshv z3_`vuz_F+7TOcKM5#!)Hl+TI0a!8z3U%mRk$Fx4{%vZ0rHXL`+Dz#6}%DRY}x{0NL zI=AJEyHG}1j3GB!Gd5J60x7AA+52kgTL3PP^7HdwNCL%cki~CAB#7>2(Hoo4=QK1n zY63YbOmamW*o0}*j9%`SmX@xx6l&RMY8ew1buK9>X+tK{S=S8@gmcf$JYF-M`~~3rujTH(6#=zv19^`Px!85lgwMw}Bt)eu*;McHn`c-(i-SV$$bVIMn_M|@M-^K9@!bzm zc;^c9VebsCxYpO}aG@w__c-l9I6ad8qah5?0&|Xj?gI82U{mw7OSeCDbwxpKQ3~{F zzMR};a?SzXrMiveT{^8bbpE@{mKCzw0aW|Y04=zR{HmFhG1om+OT%rI!q+9KsR2%wz(BDG6^3iCx^?f zGm{J%8|aJo>pB-5yTN#Li*u%62k#}>S(=`a(3u~^ zjx@8Bp{nk)tr%j4sJfqg;$^FX{)4K!pZg`~o4Clx!w3OVv8zd^SAMtvOmf`(fIs;7 zygMV`Hyu<)4bty%lb53V-H3*Kwvmz1@#DwQUJ{YXyhV%7Vn^Wo*|U$pDe~~nodbw1 zL?-})fdr5w?lEIxPEA{0hOkJh?_WNEY*~i}BdK)%>-mRk4lzt`xjylBP&|-{1*1B7ZBRZa zU>=ApZ?c4u`%PP$3Pk*~g|A@a+!HV+(AHgj0F^O?Vpccw^Oe-A`sw4xSTq@uhW|z> zPMrJyODT2=L^@Rumao2pE?jqWVM)mx9EXP*utmx5GZ2UQPYI8i zpb1F2KLgkYH}h$*KE9uU9{9vMy%)i&;2b?=74H9y0^4nDly~mji9`=RzKtMYQRvoz zCW?Uypd3+ymM|6-{Cx}Xlws=D5vZsbx24d_XecNQw|joG`hGpB6JjCsOF*y{uS>wL zHmayZ0T;2Zz7}=Iy+^bNdyuykJbDxku%Z;#)%UXz)p{+YvDo9?+PVp0N-?kpeEj@* z?&QgnF+?oO8eUgbg}9sAbzs0EVWIoj*%^t!o7Ox-swlBFH16N8+AjI#jU^$<=)jY9 zn;0P^%S19WnQ<_{1bP#10yBRknol$%bFlJM=Q7xRI6Mv~w2xpIFzn17ee?p*>JBkw zoW^t+q8gLn_|hoYE}qJK&*5k^pFc!ZoEJ-)^-ZHV^yfr(ub;av)qMI7M2wDREZiRx z?Y-d{m5TwbN^%+RitnO4S>Sl_=;}5j9WuHPLbJ%aaUX}6J^A%_lnl{aY0 z{9L_8xQhij&`?JMi}4vIqfKq+R8MX#WS+-=zGw0#%(~xCP+)=rRzez$FNu8q#&J6C zS0$N{fR#s{+{LiRf-BfO%0+_CXky}SdzyNP%sl1g7hucXfE_AfKrR0nSBfFJDbV6_ zIFhpU?ZO?Op3Fw7WLjs${_}Z3VMy5OyqQs$(QnA$f zOga!1(bBDBlGnU?m#;Ln-D8zhPo{^xd%7*UucD-?cb>Vz5P3Yp>n^lk)9% zD-?qd_?K{;2_nhle1m)S(evk<_ll!t8JPUeI{}{H-_WohmwsT|{wi`t&gKj-hRaTyf{_Mg| zCa|pyiB`>>drt`5jvrYfsH@64JV^F@jEBxS^X`GrYiQ^m)z_PTT_GxZ0=uFuzr24b zf&K5h3v;m?T*9J+pR`~qp>iQ$-){N9Q&v6H-4d?K7D#r zSa<^NW9`8EvH(=^Cl(YDm{vcR#h4B}=}gd2efH(mzF6VC7Ar%uUN14XxlEc2fIcub z8K&(}Ia27pXU|!0Z!W5R{pFx#b{joP}^X#k6ObnhN{e0lukUEBG`)x}4N7(FN{ zIgNj1_;T4`_}tY*Q}ap<`;m}+wUx||8Jj%>aBirV+GHctJF)T4mEBDCf3NI5mbDpn zPKYjS##WgX($ZxJ?4CDg&e8VV{{2zBqj-3t;Fp6iIRYGAIUEO8cMgsq%~-=|V=!`xm9l}gQ*}uF4{d$*9?Cq|2njyJraPh6p-dT><5nrhJSTNorENt9a7EF_8 z03MfF@XwSf>&fN>zn12*s8QG*+H$%O3|;_Kt9lnqW(i+GPXYC@UZV__FfHBNjuTo@ z+pRD*BqYzjcn1bX=Gq5#fH!aQxgIV8WDXEa1LVMpk^@naz{klOgkOvFGl0qCR~|X* z0}K1#dUc~1-$X&<*yIH#l48XhTEkaNFjZ_8ie(yWoyBj5H9AR$JaVkES36~A#K8dR zQfr0*MDIRuaNR2AiJTjskC~y)V>e#>f&LXHYY=NZOyu)msr_+!z_)l$~-VyhUZ{z(_If>$`s zyX8|Mug=5>EIxLl=_SkHH|6%VMb<*|EdSch+_{i96@7#bkx~}9v)~W-O-56OdPje# zs%$^l*=nyYpF6i2OmPg{Ug}USqDq%Ro@WJmP#gQ}cNd1rdtS!Yvvp8AIl&xk{VXf> z<8!3t&leFnj=p(~N{~c2R(6*nhI{nRR6vAt(Lk4D4kAqiJR%tIuN3r3c<)uDUA9qS zylR!!Z*MDn&{=BDa)0=*vNAQG*F+9R zV0#3psbi}^lan+_{s0G9j_*3=6AO$W9eLKkBoiEX$Q@l-ysk|kHVLXCO#1>nQxkXTCAHp@%Xd2FND8s0`k}(r)BVg5Xb}QeEr4~$;hqB-ur3JP9D;_p78VcUk9B* z3_Kd5$ymkk1WqLtvZfl>Ku>=SmR(#R)VNK1dwYR9ctilPNjG&}0ta#9M)nYj;9KX( zx4fMu3gvm@1WBBuxMrgK_YY+=P-C^(-LHeD;s$fJV7FqBmD7b>l&4)!4r=~7lx7Pz8cLmH(d@FXp5vX$gmgL)$P*r$qbBK9?Vb-oKN9t#S zF5njs=*W_P5Zy2PFHnEXkKtd=hj$-f;#-WWhHn})&dXW_;JPDUaKhNJt6&6PtiKaU zEKcuVtnPt<-shce-D{xbq&G*c`}kw9$8v4g(>^;xMkoG8=f6p@Ve=d2AI1_G1nzl@ zGS6!!p|5NKR?oY&J=TNy=&PhsE(`_I@77E8KuhP;+vD8u7MBtT)r8*fpC03vC@Crq zY6>n>LI%eDjY*U6-rz`))OSU#1(vPX1icxCg;LTe+ZrmRL{UdHeHVOyrN%b+@ifcqW z@@f=$2pXXVU?RL_%eiG?4hOc{fH1f5DE*@g$ zCrsI^gvMGO$8Su96eQ=5hJeo_+BA3n#QkrvKKTh8cjiiNd@XWkLv+d=d7>G|rknZ_Qn1vU z>t$?j3WaG_PVnFkk6PsY>csk94rYX1ZHBJ}@0hz9-?j|HhcQ@-1F*h`{X0ED&;VAb zo#KB)6d3$aB#`5Ok@#pca&CH6-<#FWgd5{G-Ni%7(jU^_5xY|RhXzG_ z@A%Juoc~1&b)16VpuEi&7FPKB6&XSkFrOfhBOI{zlPrhVmdJbH46S3S{i7>2raE3! z(r&w6na+&0@QO_^1@+5(OV~VeG!yvKoL^#AjZh1yn0!8_;p<~P8d3(nrUb?gi z(KH0z4d94hyV|7UHy(e@n1`0-unnhh>@L~hWp-DPD*FUy5XS1u2w5dBCw=>)@xc4$ zgs3Vd=q3q+bu`R&!sZ$0cTWx=PgNOYzvR_$e9pJCt7CIGs1pGlps|Pmv8|5(wR->J zj>O)N+iR|wD_=M7$_wc81kbPjT-0cvbNjQv%X?n^9VF)=EpBj4@j5Np_5+QSD{zOW z_$1?v&k?4|>=mu8AsLb9Ka57v_) z+872STdnnv73?e+cpCY__+wX!W z7{vHh@rNo*`HdH-)xeQ6h`^6G?niK&5}pz=Ht%+Io%@5&*Kefr`7PVc%nP4ZS8L#- z6Mc4i1x?*r$b#uyb505^!fFlCyZ}Uc-LX4HsDk*DPR(x<)oqvyQsWmHXJ_ZxdU{pX z;=zG|8}M9Kq*{=f%JY=+o5eQO>!K8a|cf<$YAcD4psSW~VPexbeuKCSo#6HLj2 zAsK+i27Q%pP|!x`-6Zy?$*)z&aqD^qpoqv}MCQ*AhY+{?=H5^9mMqaUs6^p}hFKLu zHMkBncvmL~2-xlV7K&#IMEf(Tpl*c>J3(E-^%W`cway@idA0gALCDj{85qf0x}My4M6m-@J?x0fuY z&JE7newPIgD8HvQl9@5+o`2YXI0kMm2IeVmR{O`I@S~dFq?ovII^4j$>D5jFh9`8g zquHaS-fWJbfm#0FemO1KDw|&Y!aa8I=>13SK~hM9-myy|%Kb76&pf;n{;DCqC^K6$ zem2w?L{-SB8pL~OEDHZ3tl2-f3fi?9=c>MGG3u!gSolxx!Uwy5{0Qa!+*{VI<17x9 z4|QpMx*A6?xpA?>F%q5E9OcInC-lVPdYc5P3q$3?{i^tnc?^D~vwF~3DK(GWNI7+xuPeo z7VJy7amBDBrlC)Dje-I+VTxbL>JlWiEjGNqJ4$nn$<00I;N9AQNh-=)&~3dz2CS|H zp7u5A$96u;S`B=CF38#gH@jJI?=L@ zlBcF+M=BWu$uo0u=E8+%P;#$)zX`Q3ImTf0Z+;TaVRCCAlQk|ZSJvD8(r;8n%KkQ+sN)q>p{gQ^|MiKcu;oTRefpI9 zb2;$gk@ZY|ae9T1;u^!W~Ya7ZjsSD~@Gi`8q)g-~~E|l`qF)zXQqOqWS*pMke$L6#gcG zD^<6=Oe&iz8}cqA?#{8;X4_FGMp<2SZ`xR<7OCY?%dM-)^{XSO!tPq!REA$y$jgT! zmkDbs)uX?8QAj1Q80j_G@whL<3pRb>qW?z`O00)obKJG2QMGUN{hpOl9 ztDw#bY(T<6U9b`HukdsH=w7~{d3o#euJY0CK}v=*joNEo)~7;SKI&_wvGY~48S&Ca zO$qv96F>Snx78%oSQiH!|CFSf5xUPX`@CdQ)fCy<>`FCA45IvA6#_PRk)bFHCP`=A zIpsdrmcxd>yFaR9m&mz3g|ni1BKvQf_*Ls#%;s}#()?O=b@S{p)6RX}wt1;fYo7bt zo9JpQH-72JqtX139h^Y5MfL@8JitX@g|NnkoinqLf^p0Trs-`J=;?)pvv<85PQ;{` z4t#v(O`q=d(`)cg7$o_`YY;~x$_@+zoGq%GHbHOSzp+1TSqvYyUF5)fy>yC4L!&gQ z|EgF<{55JSHC%XsX5X~00r*VgFC^DgS2}wPyh#FDv?s5S<>I0PnD5r0aueyTb^R?_ydNlfEiLDvYt}>p2w}xe3(2dJCk#PHqI$8w zeV!m@j2t&mBx4FX26?U}I^pR4S9l3#rRXOUvenVKX_r_|{`^8@2BmnzrcIF$R6tju zqx!z7DQ5k2;hK~!94eQj&XLs-*HTjnb6JK*IN{PwN484HXMJP@07VpmRkoV22M{kGgkJ*@()xad0HlbdWcI9C+S!|aHDGFBVXg2V$vPFVH8CJ<%PVe|o>YMN;7m2Bg@t$#x=>2X@J;f<51k;hTV zhSpZ&8>h4y#@tC*@Lh5qy$N(OD)m%0`@HdaGhiwa=`*?^ zZ>xNZmw6g~^)t@d>-X&SM!nrG9}RZL>g}KHY^4Ta=$4A+RZk8)B2<}O+dC)4e)oqX zo1CKh6ZTve`IyvxTp}@Jg#H%1pcc(MgQ-eNSNcuT_bKTJ-XPsZxGbrr)Qaw}lKnFM zdfA&M>cy?7a9nglw0e=(2#VQDk>L9uR6G9Bc@l?55&x9Z*tYTO*MtP;5z5!QHYMy4 zZjHaXwN(1esPROj3N9#^ep#pm?Hel}n}V0m>zF*TjvP9XTLKmac(yg`2&+9V>n|yY z&!Q}Sn9(g7*Ra_pw8oC3X6Eny))iOqYgK_L~jo$zPB8d@XC-jy^-zW`UGTh0dO{N~TU?&rQ?L*BMM%Xex!wBkh6 zy=dngSGUY;yzAaZ^)+!Gmj?75HoR(&F5vE^|Ili~Hm#B3Bjz|{@)8|-Qcb9*zh{#4 zFgd;{Fb&y6ej{=!;q$yI0TOrDDz%9mGE{2EE?gO*kvQf%dJ^PPKBa<}z%mro<( zMtm(;vd%*!1a^zeMZYeQq*DIJWWNyiy3*8-!|zP5&rW<;plz|!ebd>6%553L+Rpvr zm#to1&DT?mn%(GJl`Y!EM_jd&!4G{~CJ$jv##9ZvE-S zu`iai-P6K7<4Qqjl%`GwPm5&a`RdsX{+TWh^*pRINBzX=I4%$_x3(s(L~H%V`UK(n z=Bs#3F_eTQwavN?>NBXdoass*iP)FHMv_ER{WD4DAuLRUpE>XEj+(f?52>FOi3UrB zg{6lO<@AE~7($dYnDn&C*H_yc*L^&UpZ~_Siju1Hp$eAsB`3^rsFGviYBxN?X1R^P z>(kx3tgXwVdB8alA4(HoCW6B&DyqqLO@NyOJ`G52(3pl#*!(}BcJBl}mk*v4?b@Vd z{t=Mh+_hV$5&Jz>uaI(~JKEHy*vyx#Xk$@N6K;>ZnhCmt#W}AM0230H-#ieGfSS~8 zTsWuaB|{_p-?h>PiXWotuLk|@AV?cT{RGuwTvVkxZXmNdiLMEEanM^sfE3kX|1{+Q z-!j|vSXZO9Ss7phYTbFjEgua*yAenSX?NF(;13*KIT0uwY`Qun6f)WBi&W5mTsz_8 zY6l5z{1&9Sv>9^q@JLEUTtrKYs4>pM>o;zQc6{yW(S#HAqhYl`JS;H-V!Pi$23AW+jAAQ|Bx@#$&7ZL{$GU~3Ece!(w&>TbLq5Ea(h8~XD zKOC^PnCt}guqIvH7p$|I$9x}~*FuM`kUDyN-N`8q`Q`UKA~T|#Kpy>0(~xb=5jWK+Mkg*AHISw6>=p^@OO)$ zd?1V}SZseiJ6qSL8Z#A<_&`5b2CiKs=dX64?Fcj$Dn)!=Va{ZbWkj!v4GImVr9?&3 z)D$;iFOvnvGb-1KNO@Px=!8>PXKIt!{P`NrgC{5A$OS&Pmi?8gi_Uwl9t7%&Zy+_#fhND#JC*4u|j`c*Hl z+<+OU6QHaN3RG3E3?*9PE3=9F1iEwQk(9${*Ep4s~y0pRm=SC?)r5%lzV?i&Cii_Eb zYE-ZdkEm&nz5k0r8Dej)_Jrg0Vs|hn8n5Fk!2Oz?BSk4 ze^2-?OTGaJQ2CzX9ySmlJE9GS*S{hao7F0#nbgo5o;3un;fd;YAb-IiA-a%-Ap0lS zz-tBOp1=u^eo5?pvp#6?HcsFTrUnZjL5)@o+35NG0~drKgpd(8OeciFRWU~}{WzAd z;5br;e8m#MRuVRqVu!vhh5dj$RZhqsC1UZ57pEYYEq1qj@s{D5!d-K12pq|vkYBMv zeT_~i3)Mhciv5VJA#e`Vvsxgoke9iJ7{{?1HVVOgm`eA3T>`YG9C31V5F1Z^5X8CU z{{mzmhlM!AE&V@eZfKXqc>a0$=r=w9cf2XoHCK+tS1+U0FbU&~5(I7&s|C~<4Q~mO zp1LjH5?PKLKR5#o%SLzrJRfHOK=}ArA_}VlyJw`aARcW75#zsu>L-1FuiLfE%osQz zv^H+!CSWAAfE!}UOXGDC9@f?dBO3yHoQYrt0ce^ydQP2KNNyX+a5^Za92plg7DjUo zd?vo3wNx7=xE_ef9`hZMJ`lDGnfDq4WBec`4Oy}~A5%8s*L=<4Nia)E!U_~1Zppj< z7R1l@ic+A@lm&m#%eLVY8qmwUZD<%bt`yQ6zenp;nqZVgnu#R2ZtXKCc`=+>JsZ|j-#g8! zQ1{bfLAaA_dbdOV0H*`Y%6c=}f4R!TrIg5g{$OuT&)I;W=3DKO^5`a}^sw0K3;KtT#ao+&zi^9z5BL}Gn ziuV;a6o|@JsPAULEA>uCRjN&rIp+S;I&qmK{Jxp!|KT>z7%;@RK3JjvvS zKS6yE;Tyk?I4`_v25xl!hpks{$6saf&|IHblWDI;uxujY9XWFPv}x0tv3}G8p|%B) z;gFoBvnEa`S9y4NSOM~pKo%GPl)1QM#HKFTKN`Ps64#Gb10rxD3#R8vjN<0L5*8LF zv!Famc``nODuI9|EH{O*HhInsOI?`Rt#E`iEO^BAdeG^laEt2A7vHn%62O3KKdW16 zr>%41k+7ox~hqlAw2Az~hJsu_DQ6IX+~~y<^0u z5tD1f;-#oNHQ-p_pDqhrYGH}YT4G+Lx)#5hfdH4un}+qC9Vp=nLbK@hQrDxRDMenl zJ_SiTi@*SK0+i@G^ru7>jNq&=pxd!Gz5RK}P52S>vcp)MMd)8-*dD$Nw+^u zoe7m&z(Oq4Zs#?WqF<02gx6(SmL9B1G`Lq(1VZyQPMDOC5P|&r_jjqPo-S~=yiU?; zMnxaozaEh^=+45%oF_e6t;{{~!y+&HP55G6ae5O^6Bea=%YAEIO7v?vpGstijilDEyl|%7D5>-fm zn8DqmB4pO@fNlc~cO!NO>G}0iCFrk0!`Qe8ZyRRy&3K*lQW%jQUs`d`v+wKNdeBx} zy!;Qb{;3hX$}P7pkxXmaac5}(Ttqzst|HD;TVl9Js1?@~+CRzCosZWf}N4-jGt z6ieo1da-=u7q9;RTKn>NsQ317?oOP}N$PacBI&fJR7{kJB$d;qkf_jN6b+(8*3zLx zM~lIXr zzTVgSdSCy(HMYO@W-;)z+n&pN*ggA3GBkgh7^nXT4L6DNs@+@Hl1N&Gfs{Cr@ez-@ z0kE_a7U|dGMF5A7-ERLrkdlB>*@nRVnJm#hJ3nm;Igy(71?`_%ua)b+;l{05F%-%< znda$~oM^LinMFn(_!lPTXtiD2?ubr9caUuZ+6{RKH@JA=LIkd>5dgqqw69vy>SjUTu7VM@ zBK#foFlae}(5YG7^nOHhi6ih5nv}CK!)4^D{Pe&@58Tgfu-}RRnxlU*o1^?8-eU(U zU$j?M-myVo9e6E8Q^ksk z;Y#Ip1uS3V6zg(UJZsF=qoQPCisYXLJy`5PpG5vtopAEUqVAiWrmFJMJFFwL+4C!; z8_ewZ>(2EX|JG{ejER`KGqRV!#UgEy;zSj`_HPU0pJ_!tz)#>|weWs$K!<4{}D@`)Pz4{lYr=_)H zb}J7dNp5hXP;U)CkxwhXQXyN(u>ZU!ZngaqbX?@@i|>uYNbEN)xaF5MoR}#uAE&ho zhd3lRVESvIm#P=;r>b#h70PXXu=LDw-UnAa=lk&ugqKpXpL6ai77yUgrRiUi8w7+j zO=ZRFdMe?qHf-+HwKm(!choF-;A9wHrXcnBT>Xg3qrK1m#=PxYOyL}23duAFfsPWx z)TMh~VswGW+h=G<|A8wR9p3gt)zW)NZPl?)S1jFss0|}>x}yG}2ZdbYTl-8^vAE9* zzPeS959nDydXHGD*LE{hvEdkpqcbw-Z2#%;AItYY50X{XUfQ{hcWHQaaUDtbyG5d} zu)J4cbReOALIS{-*rcyNedZ}_XsJVxH?`9&`=lPKw3pd*OnxgTK`lkbFzm@d1X|}# zlbKCmCEMV57%vQ5RPrFvFnmV%Va0PPl3g+LN*<`91F!-9cv>{gR0rGWcC35Jg`D1o zDJ1p&BG52*OTRZqVWkyYgjoy%}8`rM<#p#;+jDmM=%C z%HhDL3nIPzLDVNswzjbgXK z6EZ3sUJ6j2l~(&Dr^wvT+g&(=FJ&aOyUZF>b&#u_`4DEq=f?c!KS62dlX`QN8jZ}N zcL+kC2QJT_Q7I*U_uOoW;H#iY+F*p1hT(~sQ>Q-2pt2S!{;$wM90x7!iqp>H-QsZ2 zLwny`U!R9N=M~kYjE>|f7avaAj&SWk`mNXu@CnHcfi5oN8SKld;ckCC>kjvxD4yqB zxHcDuTaYy}d^7xX<6`<*^araD{k%ZZvGcW(UzSva0RsSv_6@XVku^^kh6{QcKKlP? zZcfFQ$-sw3daiPwG;7v- z_|~mkqnbAG4gZ|O*L-q6 zFbeh!&XflA{1}RZI7;{WXD7)-8HRIliKNHu*?0nL@9}+=Kqzo(T))Zqk_wc*<{%an ztYCDU86&+Klxc|a-rZk}Hg<;0K;1k2;WxBizd_*YhzHxNGtwvf4Dy-RuV1rI-oo$! zJ(}vr2YiJs0 za7pd)RFo;!2xk-~+|a!pgg1qVQK%J}VYzdm3zU}K?d@N1YTALfClV8?J!Pj3(!wP4CXAlvf!iJ0P(cUg<(UyTn- zekQ}a|E~N7Uux0(3fZU!4?2Pt8&Rwu#5&o<3E``cpDmByn@drl1{Z}KlL)24{zUbu zi~STlLOO!)wDT(YQp}PE*Kh{mZ#N0nX^wbmZrFF++}OwkNM4nC%N5>il;sgd50bq` z?IRxUr7PMa&ELPj!N+DGuP~Rfvrtm1p2!>dm)H4KLeo<$wu-or;bTkor1IMyZ8yfED36*?qU zz&ZBdSe{|J7WmJ`*P8w^tRp`-b!v#YW!i!F7#ZbZUxol#zq_r?3P;zgtJIYJR0SJT z)KRC{qXU)>R=>|-8h}sE`;?_gGOB%dSw0sxceTSIX6EF{uknJGoI1$^kp^1~Zy`{b zGtAyTK|5n)6Vrufgy*&?F>n*#N1V?!roB|XCaW`e1y{)x*MV{w4y*tJt{w0Pj^DaD zpGRSuGFcE~naNt#cPw!_jK@Q8b=laG{KCRID1jW|>m@BM-9h;qeHWGC5XP8YePKZ7 znkO6I(D!GAFdOkcCNJ1(7;La@n*d?t!qCuAAF@);h?CNFZZM~>+|pYB+MxrLGbgR{ z!i+Vy|2BQNCt~SS6z5*pwf8AEchhx+Pk6fTa14YH&EmQ*ojPSoJL-d%u%-~e43-W3 z0!kO+KOsKd@0Q_WQly?|oga{L#!THZNyac(W#EsYDZg1Klxcbmri%O0K1(f}NSyWnOE&n}ae(zuXpJIcIxx7YUX-!F5~ z>4oO!(^1~7Kz4)ZuC&uxM$jFs85s`Y$S4k&f8Nw;u6jri7rw`^6|%7^D3`&^d^BmjS?Z5G=qq{vfTNoUIu!g+qZ3t7pz+0VCmU4 z7gz?Yll`!A$>G2Yu-iS$7E__ z;vF;0B7a3M!s zGY^#l6SGpscE!xZa{_Lfha5{)R~YDb%w{b~7{Rg!t;2Z}Ez(_B$>HjvZ-F`@$|cw} zHwgC#rB+PxwbL_#wG%~0qx)MA;NooGv14lAcHzB8eayp$9Wldc38swv(&j${5OYSr z)?BkjbSQ8wvyFqh-GSeoYxDlrqyY=z%W1hSblveNt%SwynO%Vks?lSnoqZJY1kFB~ zJHu8S_)p+8m9q)^(&n@$^Kww&RumQnO3ThV)^-}nR7aFIcjlx?*&rTH?USzbyEuLB z-Xs||V`C=H&YH$bS@zJ}TDZo3Avl0L_Eyoeb5akg(VG7Ew9`^tRdc9vRbnDHXv%L2ba6uE-Wzps0}lDbQ};yxEE=yuNS; zy}tLTk-vacP+>qBrd}AT;`_O(YNcC^yIDUE{pU0|Bv6V51*WQq@glsHckq&w3Y5>B zoFwBHz{b(LSgJ;W$0#Q{0<n&Ys;L=L_stFYz`FX~x*CfFfC8PJo) zT<;|v2+{xz-x$oHHvuVMT!2&WXtVt#AKE@2`YkIlL@Rix6&-G}>n=nh5bwph{km$C^9!$`HI(nU`P`l#{9I6=Ht76PX@H-bQM|nhY5U!=B?nn7-^Crt zIVqA{hQ1CQw(@}hDE(pzbw%%1tgMiox%vvcMcxhcw65yihdSl5y{_siadE1qZPe3V zR;G@J;@e-MWhD{kM{_*Z>r=REp1@na4IU1w7cVx@C~^qDXAej`2*1+~KmvB57n&b4 z6%-11QIVxk?@#hg>gcSb2KNl!uT=+zJYMlkW0kmvDdTZNQ^z71i(myL92G3`Fn)KcbT` zjJkr*S{1Bn1Q*8*Il+sy3JA^V*@+`##TV}K>)$=Es6CSr9~d>oX)j~fS6uA@P;^A( zb_49;dbY4n9<(+&QPGBL9kcIIZ1|`6=;-s;aiC#mIx^Jiy(GlaBExm3hVNRBUdL}9 zDvUqat+&ykcBbM7kwxmdz3q?SDMmK#IINIx3Z-Yc`XHk0YmqgHFRJTDGN(F!$BmU2 zQ2Xi$hR6;xD_>~-`KfDJmHK9zy;I_!$=C|)lv!hf7M9Ag_qXEB$OyM+A~&1@iATs` z>T-*fdwSsWx>N*S1Mm5-{*vCUAEeEk3BXKfH0n4j`A~C_yF@0IZ4&;0qL&~YDo$>c zhnm~jS3mLzNNZucl<(8`&`DC_9R~Fj%IQO0qlHobVFVbpuGPmccsN-05HXBOP8*_` z>{>-P2t9k6E2w(Qr+1i}lj8&r+&(Z=CkJ;6byfL^;iTqJ)bY9nG#&A~En@a$9juZX z1U=n>swSVu!$B-5F?tL4>x$2xZ!g>t#zQOA!~&^G1OM-j+_}d%ap5YJerPTQTmNAB z#)y*3QY7uKHu`gib=#1|#ML!Q2_b5K5eOC@;%i>|$)+6e-OGCX8-FxC-Y`nm%&m}) zU?EqH>x$`nDY09Phq(zVlCWU$8!5Es&Y2@d*xV%vi=Gaae_vO+>Tfg|Gq9xH<;02a z$f}oN5gVG;xzr~;T@%5W=!VsBLBTu8LxH45xGv}Yvu5jfxY7uu6+N!(O*)c|z+k-K zS0)p@qZ-vzxJd=DG2zbLpZw-iMezP%TqzsiZmPtPrb25l0FjCKzz7+RsLb;AM$nSh z=`7MahDpH-9*`)d;tVd_8u}8JiK{KsUADP7KvqwjiOb28f(PMV&v#!pHh1RFz8&u+ z&nv4?4^_3aJ0^d}>9?VY&J7=fVN1hB#`p$|?}S&Uv1rlew5V@@X3edwg*YJ|Xs{jf zn*a37Xn0l8SG;Efc0dgB3S^}ox7gpT}fY!<#{K^=dJ+KnZ!{R!P~XzTmZXA`rb#@DT|XFK%$Q zD7H4%*1lYOy3=sMjKj-rd$a+qmsMpf$>F8k{o0HR&IDO&fu05qZ;h61$s(%yV9u~a zW&lZwIGCAJrbNYT*@vek{+gy1ZhvvM1g7J(IYKwnOBFTx{IunxfK+k|=g%*79ioe8 zeJLd(=t+k@U*gmpGd%?jr*mjI=fXzL)M5*+@qyQV?EvK(VEpkl=S+lk>$kmWJOy!J zvEE$1gID(XpNN}*i2DoTmIuCM2W&b*D;!mGP>2St)zWf>!2x$|`>DIjyTND_U|4Su zyTq2X63h6f-kq#Kb#VQsnm`9r`%Dr&`C!4E>H(UaaY{5RB<>g!Ab%=FlBl*pk5 zi@km+9}_I;si|!sF!r@D%=`7&)4O6;mORK=xKrozd(^LDSaW0Qcq{hK3eQ5cF{xG+ z%rf%Sn~Dqrgd&8$Slh@@&4`L~X~=KbBObEp@{G6in*j56a()WrxS`WobyxpaD){;U zq;h)yWa`hULF21!ZlKoPtxC}$pcs$>>%g`-!tI&>C2!wpxg20^x^Cp=(AZ;iz2wON z3O|f5GmxDO+(uANWnk+JZ2Pef>=@ObS>RNO78)7u$s+Iq+!rwzVf(H#ts0FTbTETP z(7RYgK@7!2+|szh2e^&64Fr+~v!xY{-S;BrZnm*QtU8fdR;|9y?S6DbC*m8Cs$8>% zMBiTl%M}5YBFk!C&jg7qj@o8AY-_~&(Oae{^?3NfvAQlqh7NH4eQjURWxEv~UPx$* z;tF+}5GMu5ceB)wP4h+8&ofEJ`ed3s64nwph-en1Sl23f+INj)GNc z&KrGD>N+}>oQFxxQKEj0 zF;Fn%iUSYq-8ft7E~O%!_dUs-71uufq;q6p7f3-ZOn?t(jST1r+`R!PkJ;JfCuE3z znF{-m{KgS)K;bGhfCY(-v3vINtzwVGC$m=QXX5gSAC)~2kX8yjDN>8Sg66D(qQsZ4 zyma)2T`mmjGSW|~{^yFRT1hmi1Bo)BGjMTs{)X?eV|s%Y4C>et>0pG09@R_CKmEn{n4q33OBE*j~obW+CJ_-*c1rH>&|5I{G ziew8fbjZ-!`{xGfU(rn0fCmKdXrQ7_7%H;W@YX|;J?2>Y*X~gSu=;-@fcyhpWA<1V z-e?BcMGz~5d%zc}1%2E8TO0#vwdYpn$V+j13B#h=Qt7e<^}nt9n-rr~@Xe3E&%kDH_wh$4Ed`+9MEg&DejDx~8pjBcn+V_EHPS!* z)P{7V0lP4HHQRffTmc@`Eh=2WlnQXggWN}eF*1&Pm_r=_>L)17oS6!SLkwSVX;-k3Xxad$#n)D0SNYh2;)gPA=Y(H=`HJFx$&Z*Q%WNud&@of}$l0`2QpuV&MRn^i}P&&kfx zI?@)FDcK7+(u=b6W{)ly5#&=PfnW+J@IM|r zc;F1K2o03=Y4et?}4}&g)xta8&<7|LCZ14{ESp^mOWo(Asfpbv7?5@DQbA^4ZJ4 zyHIinOcbW*qOtVw32TLQCULoffC^c1L)TzpGCB{QQ!%2Q&DIV!2bh<#xOa)-Mzv2#e8URxZx7~Py4mWkjMuiAbGTBr-6ZZ*@fa|f79Xdx$z~U;)T$~^*HfZbb zX)T1*51Dg*aYbXf_m@{=y&9rIdJ9(77*`Vs2W;^4@@1Kko~#jT;oi5|P~TndUt21N z^Noze*ipqsh7DMd)k7#c?``ObSHz=G4)hKgVx`I;IB zxX{idOVgRw(wV!fBJSwYp@!g5u(_~Q+RUAQ$6t)Y^Q~Zq{)`XNL>8t6s-P|##%q$P z)^roi+q7|`2o0j~GqT_ky?Am-bqnwXkx5=i6P&aYon;tlLxUp?=OzQqE=Uy$3IrO? z!Xv|0YRpV9TprL-xEw!z0CgdLj3C%x$BsH|tgtV-bA}mqap&|yis?Ka0d#82q4oD3 z1Q{FNxjM$J&zqJ}@8Eb=z@J=ZU0;bUMRF2K}jA{^=)2C#OWw^WDP|@#Dk?rR;Ld zz-&7^d2v6)HtpeQ2|KvudlatiS)|j-e-=n-A2L8gd*31$O{=>aGflh(eys9>o+S+$ z1rUH>Y6Gd-pe6u(s54tL2ZG+!B%K(?G`rTP8X_l$-IC39b-AE7H>LT_14tthr~Udb zyEm-a%M=p2##hUI`<9*leGOPMDqZa>lNO_=QU2v-^p5ZgnX{D#&e1Z;?w+1HtOp@n z!-L5L*Bx|(z{kgDhUMS(+far)EqxlCq8smlSnZ?9VCvlSZbfQ@dXY!$&%$~0;2+}K z_r+gPh}-whN+VuROp+ZBy(^1bhTbALvfu(+>Bpo_K;2n|;SmI*T^2i#eG!qI@jKb$ zjyjA~-JUmpemiKGP!8LBe4$pyc%2R&gPT3;_ut9|BTm(CMz|)Cv~7$nfZMVmr%*YI;h$Ku*>I85Z@V+&k;3 zzROJH!NWVq`=j+`BpE$Dy|}Iu3z|*Q)HKv`>3SG5`m>F@Wg~EIr)NCKvaY9J zi>ga0!J#5i|LK@}qcp?>5(HHJld(l+1(-XY`xd5%gJ_;S#yS^DnQm(#%tcEp4R$FR z7(TUi_=dPy1@Tmvs`W*YxtEtVsdB(~Lzsl#N!?Tn*E9HUJ0r){@NOT@?3c1aXhk+F zgkHZ6#?Ecns>|W@5tp2F)M(ZUE1w0M9!3T3_sm3z`5oOT5!kasZC;3!smO!$UG@xK z-^(qod+t5r<>KgAi|z&mD3p25C`wi@T=<|Wkr$;;0|}}4mLBjawPod3R!SLJ+r{HR zbWo-SO(UZQ!6@+|HE2Q6g|VJ^0uOyKZ*E|ludH?+xN9QQ?8_hBerqX70YXe-Sr5HA z=J`($P0qHJdfb^}|Jk<98CVV+aZhtY!#f1-$D)2@NG_1?!<{=VfKxF+ujN>~PLK>D zw1Z9@=yd_8j75`cp!g{p$`AeHP+gpZ1U8eug4=~SJ7BjAdIkRAK-X%cJZFTc{{*|P zs`OJ11=_LuzkVvMBb4k+IU7NjV2MLUyPvLaWrC$ncUPAH4U65A!HsA2Kw(ByZ5@vj znbFf#ZrL$LR!iI=LE%?=XAJ6MLjhyh4`**y5d2c-*^n>p44 zX+|JkD6Kzs0WyXA+%iBIBLR-s7~`$6iv7a_t!@|#rtbfYhaD(5zC-J>_?gi@&~2y+ zA_osdMDdr3TUoaI?l<~AOeV?${Z#cmr4nVh6@4Sats|cxuzmgN6bBw?rl48DXUYoeV)jgX_0Kp7Nvf`us_w^7*eJFEIn9S zlY5xeaC^7)y~F}!DFn}3bto9X-Tp$J56~4*-v`CHb(_EK#*G_4X9Y~>08Z1oBYJ#H z=HHht9l|=2VOZ|<;;4Vc2|Nyi=<&@EQclg!JiJvmu7+6_+4bY85 z0DopW3wa07DDi?0~ne)?#0xE-Pno0LcY zq@v1u?<5~0^oPOrDPeG**+L;yIS4o_vQSf1;o?(n3XZp52=^TA;X?1>*YLYPfE-M$ zR-I5N!u(?zLbM?4M#R|rc|CY3-_c_!uf4{FABiKhe(a44up0w+(O?!lfS4@`>ZMNx z&@NqM^QbfAiI}0BHtk3onR})oqsV!8>xUPhb>jw=7{Oqt)2E+{hJl4Y!Q%^Ow->qu zsc=sSLEHd))mp3`qG~#sg1{2G#uCrvj#i9UeRo%VU95)pu$H(hl62&NW6n)Z8Y+<+ zeRKaMDr_!l=l#o5*oFwD9%E868#zb-DMZ^{{YydR4h}ORtbdO(>pNgM_-*+{vu$-Np*{>+#fbgdBj5?)&^mXXAkm3-})#9sN>_*j^M1XMg%Q?Vu@foz% z43b3+ZvY&S3HgLDyhjFVJg`z^uBYZnD1Vqj977I@4H*mg+}_Vti~)BGGb5(2`y1t* z6}bW!tKANF6HXT-Rwq(v4q{QHnBE}8bhI$S1TIPdLO3=$q zgftcElTTLnOqa|Pl`hZsXyWCAfv%{j2}e~Gy|km%d*miGFg(Nq0qpONFn8&$jX9R@ z<(GCs`#hu=Ggc8Wm<6-TI{&9eAYgP@eAe z3d3Lxa>O+f`;PP#deg}QjMy8`B4Xm=F^8I9HQX%Tv*vCbE+4Kzw;pvQkujhE65wnS zlN1PzF7-UnH-p$NA7uz3+BPKr2OjT>M+{5%?AVBZMzOykiwI zN4HI9)Swf69Q`&oG_Is<#@@%T!=s1d>}coEDw`Z_7kJE=hN;=fK`64MLvto(qp{Qa zrP$XsB|19qVBrxH=w9Yhxd8s&aM<(FzO-virE$6N|C$MGjijSmpN9n=efWRpD^VSVhBkb8PyVG5`Ws_MYHK?xM;lxBHy!JDN@N?$2~lH>wB++mZEG^~T5_^8Hc z*uSkr&2lKZ7x9Ry+`~ANUf3^BNryrS<)KZp+|EHJYbJP}lrt^Y9{OxF3ocU!7W@I} zZHP`CC9(rQQxyR&=1o?hdA0Y5XG(Ii+UhZ2QbyWvY0(V=v>YtblWj+9I-f|Y_Wt-Z z))k%{%lDYL3vSDoHR+V5nXgpzJ_i3`S+T=!NvkKa*&yasNbDE%BL@m3FtqHn@+2v- zNbcmq4`|E$qZ+8Z-$xfCrzI-H;wzX>x?rd3i*y?@Vs9ATX+Gab$C9cZGzfhQVXNkd zfPi&~N`cLuV@t_N7cG}U65lf9tJR~H-vjP?jkbDhS=7fP z^7bk&&Kp6fb|MNB4;QcpzIS;rI^^N?b}ynvA)KI@j8lXG&W#GJC)Nnh6;I zd&^Sr{v_Wb22M#vlHm+F1pPJ0Jbz{V)fc-h6a6EZz?mA?@R|xKs=2}fhv#8;uOG|Z zzoC&5hHr#6K4}5RWnSouF-YM(6McT>pqKzLFEt~Ff#lgec=UZZS>nDm>X&>31I#rX zX){wM?NlnbajYM)dY_jU?Z`nr)DDh1Zg5pVO7<0%r`8)G6po>G!M4&Q#e+;ze$ilw zUBZhT6w~4=*{k;tkU!2i3u5UeL>JDOxIficVqg|7=U|gIs%HA?0eolutoHp$~U#<(?MEoCeWM>cA0DPUg!+ET~Xrc#GaGB=!nUlNe4apo~8D zSGj3RodJf$lnCH=$zb~cRF;naRd}4nc=D_)5qAmwNz^j2WzV5$RAr{{aAs`8Jrq{y zJw@8R@u{HTGEUqn-*VFQ@*T1S;7SuAk)+ZQA_Mcty~3oQ#kVBcrWt~M-#^6N6x$FJ z8LI{pwX@!+Dj;Lf0b85(ss~G;+(4+1@;gkOHDf{%-I(Beri+bguF-EDcjbI3*b-gd`V83 zgdtoz&|SCC>mg&(LJnh-n~ZG>LISohY07WqxeB;byud?Opt>FDZ(8mvh+kY+<27(O z9B!>GW%2UVwjrf9<~&@Jbplf&oK6uBw`ccX6%Cq*!@^ZwWRa+FJE-QwMVV0cJ=LUt#N3pMm*S#$E=K!z~J`nrz`rUYLUVtk^N~G zA3V1#NBXD2!aigemy#xgf&}Qh=fUv-T5Zse-eY3*wmx_j9K~xE5!Sazx(t(fz*PB3Ke;{RfB8Aw7XT zY^PD3zr&_4A$)9MY$qNWg9?cpzd%gWWEBlDjr5mi8CN^!pVQ8BEs`$Xw~Z9rYNMs)li!yBjpkX>_E#?4c(sCtF2R}-hDuHBM5&!L-lLh`aG5!rV#Uv^IMXP$v+R`IW(^lMyCND>yfPI zf(xYC2DpG44^i5y@>aQXc3h0V@LCHw^D|;O<{EsI(0R{23k% zR31|)^--5UdkkyL=GbQLd2|S{uj1#EDA7PRZ9w;AarxhkCf#drx8`^1=KPhSD<}RF zR>Kclp^b5Y+5-jOOq}v3byWw!JbO}T& zbR+JdU2NBx`#H(#sn?-koT(sHzW%kRV5Vn0=B+Ze-p}>#&mF0UB&)R$UDc>jCA4JmV z3k?k-Z7&210N>yxUG*P)Aseu08VHOyh|LvuP><3?=7sY?QaC9!KW+0yinh2wrK)|v&N}f0J(cfMNq+#g1O8FN&p7o;-^ux%R8IvdL5j#egjs~}A ztdUidd7I|P{)CAgjUUnICn$`CbCNbQiiYbstS=YNz2CL(G(Gy zHaJzggDc?B3{*yRw|V-}tN%QB{CMeqAN(pG_Kh1{QUK6Q5vosW;8KY$7(!f7nmq38 zacq9*poRrVcpFRd9J69BF*0BLa2M1MC>)`Yx{pc09Th#!J{NIz2z zg6>Xy+X+bEQ-*w^ho{}d6#yZL=_-=%bWJ`8qgxPZ=+>^|Tj`ceU&Xk5ahBR? z;88jQcz+XM`{dfnHnsRdOfRU@t;v_+zJJPr>Iz4{Rsi7nnmbWun&wmfT4l^6rgmgR3xKyfxaG|+)$ zO)WJ6U>Zn6A>vka8edK?yp_%pwFVyT*F;4~<>@fOQ+r@$F#LwIfn0FqJO#-R@l?0V znnX|k@9*sdSy2mId@ykHnN$RjKoZfgxRrDe)bNL!5{>7Q)Ex?MXVfTth!;vNY1Zoq zWnGy$`dRDwcNA_YygbMpM(;NjR$+gBJ8EYaw{?LlGU$YHhI*uL z_-9B$0}?9q3~|g9#Z5AJQbcsOm_0-<*crvWD|kh&U9Vng>gc0F)DFFd&E6y@03FTc zJsgxg4e&P$UYzc3ZpVRnQ-QRkautOKV`lWvHp5VK1nY{gIEb@~V5f_WN_s1#_W~Xd z@{jL}jqYP6{Z0KpIdqh=+TkYO@sl zNk^RRHvd=&adOLpG`|?QV>SFth)gCaH_?*-rd(yLj(tNj50FloYE(P2^-D3+53D+d z<%<~@q{bt@3#1=Un7R5TW_hTmCTNymklX-A>aEpE`PkO(ElY?4qvq=j9{_ZQbA#tw zn9b9S-VG1MXdlkN8r(c;Li&Il?KHI}~vm zU+&Lx$tm;=#P9Jwie#xuDOTc6_ut&cL1x{_V-ywvg6ac+V8!~I0Mr^E;u13d1iKbd zRAh*q3zrZQ%*f0D*N+@zU|Nr{cvSraY_R-%G4{Knhe-Pj#-(?_EnK5j--OE2dZ$`%n=&U|Rjzkg0Y#psCN`3aGR zs6tTS(P@|D8qnghLh%KTD~rR?fd2=U1B&}z7+lPRCrlwYTU^A;3lAD!A5Mk*b`e@3 z9ryy{tGxwmQ|^A&6Lcq0y`&oS7%dTp2rG{x^6Shio_<7}7a;q!Ba*$ws}qlWg1|u& zlsc(#rprNVtDO2#$woKLf60*TIL|BN#UO;jJz~wBwQ@Q>Q6v7IwJ#-yAx7*2;QWF{ zBc|to-Fne)VoFQJF$P~kJyF{qv2RCV2F~p4_~vt5no*+A0DQ^_ z(T<7%;YU(W8WByb+UxM*Ez+Q|@M(62`e1C$0|~7Fyt(qTSz0?E+EPqG;f4G4Ph5H0EBO#V{0S`UvM?1w%m?@? zA<;P0WWXc9{2{dC6r~{VxLft+tYI3E)cgE=Qo{vOUr%4ZogNpD2hg^(r~ZT9XN3|U z7$Bk#vlNFmX67XjuV&OZ?{(@J`W&aLdI7DdO>7g~pe3^X%UX*OiX?KR28{KaUUcHwKD zfd_^7E8-75o+UT3?;{|`2cUqXZ!b>Su;H+c&87`efd$RrplA7;{YA6x3FL=B{$~j< zx@QpNp_Q7TS>__ltbz9hE$T!T-bC(E`yr8pR6O=on4SOdq(`V22zWU;I?kSR7YLyU z#$^oen4e0{vf3UfCk7RY_4(p14N`yU**;~sqZ+Ym2Y$OdbY3-nNe2<2i080%XLrJ;p z#X~;?JH!@mOfr(#9E#>PK&@VSXv8UkBJTr>`<>1)z9zd+fN6Db=O7vi2xs&8{0^E5 zA{I$gL*vVMT?G(2@<}p6NtAA@0ZzpuU*LujoD9XY2z*q?&QI3;h>(qy@6>HvN2f~f zGakJCjcG68=k^6K)`!%J`(}KCySUbbr!yecq^^$m{4Rug4(Afkfc2P%0e>+lp|R_e zYi_H?te93qst#m{?|@)XP+qA_KhzEoKC4oy<7|rLyr3byE_`8AixH%=_IWCE*8yzT z`<93+NWV%wzQh_PGdbZuj9`dii*a>hAWDAj@`HAw7`uloeT5kjtT8x8izCrh>3px* zI&l()g|0f8H4%A(#)`by2M-G;p^IU_{4+L20r$8`tEf`#vKU#pLf>AzE{t9TD#3}J&RiKhE8l1rm+Q~8X7ct51W zRaI5>sP7+;yyN_NJgOLUAT}6RF2arX&3N&GqP=a4szj(nrIbVyCdjwrewHAM!DEV3 znLcLShI(I~Bx;mRN8}&MOFj0%hy3zOJy={U51xjfJ_9R~%#Z$je*C5+$(N_^up}N& zK#L_SXE zo@|$B@=cL^xn?Ei(co>PVV?^>Nt9Pf0o+tIw PM;hpF-|%R?)!F|AgG&~X literal 0 HcmV?d00001 diff --git a/_images/notebooks_introduction_19_0.png b/_images/notebooks_introduction_19_0.png new file mode 100644 index 0000000000000000000000000000000000000000..14aa9e374e2a8bb90b8d3c3744cd024151d6ca4e GIT binary patch literal 55282 zcmbTeWmJ?=+crE5L$`EyNGnK44W)D#AV`XYbVx`KErN*BIe?1NDJU%^J&4lX-CgtU z@xGt$dw#t?-n9@}vxaM~Ywz|VZf^|&h{ z;`IN$LDa=O5@PLu+-oI{2jC=T=87V`NE*u;auxk^u#@ERSwhOrn5chi@uO zv5n&2ZRGx1$qsruR%yF%c`(pf@VM|@O3JE7kgYAR{N=8)pm7!7JpnF!4wf8pUT{xT zXA7)od`0rzNsocE*J2PgHMMu`sUsWhoN=-tx2!tYZr!4|IzMVX8ZnQ1|Nh3=Ud>FP zjEOMqHq!Iu8 zlofs2>9hTP#dRgqd){y6g5@o%!dr9n`3M++)ANne`1JHQ$H!j18Pb%ov9Y6#0W!D6 z#P%j;u4%~R4#_dMo)L6?Hnp2f0i$sGr3mIA>c-!{f9;%{+EF>mq4Hkn>nqIl%Y62p z$sYZASUVd+v6b5RjoBW9s#bjzzZQ-*e;#^pr)aDm7yfW80rO8(-nZJ5^LP2@v z#mPqpT_0pid2Q0&zJ1#jJjeW8Bx^@77B=el?~t{j{8pRFxx&&$C3p9V`YV~8dddO0 z6DA3#@i2NZo3>pMZhVd#|9>m<;r%~1dIaY%5nIv1k*~h7adcIcIDQEE#?n8mu!QPU z4gUEPmYd5l>WGlLeZx-f-S6KIh?%5BhkO2mD=!^ZEfv8aFZKp$s_kV8uovK9(R=QEtWVuPzL2@ zxD;3!I=rCZijpyS^pcVb^{n?|rztM`YSVVtx8by1BoOh``8)TfQ*>_B{=WO4k&(zI zIEVAE-d+_&MXaMn&~&TV@8ECPoog61lLT9Mv;9L34_{_@jlZZp{H+Peo&jDF}TH3C1C!vFJ;? zQ+vK%s673-b0NOnNJmHKW0FQ&%Eymf5V*B9_xaJr{W%@bn`Szbv;_XgW42FfUD>0f z0d7MLijAogS5zFFbQP||BS@JElY7En41Km-=!o49`1I*hg%mcZ3*6a1Umsc)zh24U z=H-p7X6Cq_ML+BYSQxT;)z$!ac=4iTvFk&*<5;7~NM_XIny3#B52o8&1q7gV0y(4gCNI4JZ8%`rPNyl)AEr zI}XFMskT`ytz-%@*H;%8Qa0S&+)@iMV!hV@=fT_^KA4|Yd?O)|PEu%C+VPfI#`WrG zq;=zH{#QJw)XAhrx!oX#vKviIf4`37Od~URn1k;D)Ag@LE3Ani79BD4qYZwNI+=IF z0hSb*H89YcxFY5x(AOtTR+F`EQdfsV%Ek}PpZ$8r?lb?IS4$zVHG+g3hTu0R025Hl zw#{6%jr{TjA53(ok!@zUL&15Xi`fKYPa@e+OKuo%-LCZ)2q%rUeVh6Q+DA!h~%^nr~K97 zL)o*%59Bbc5H^dmebDt-4#Pz)higOeDJfC0jFOo7s6Cy36Q7+O_vg=}jKK4?Cv{%M z1IJbDI)HP35{b;d*A!NCcfWn_Ez@fNo`#L)jPoXq{?dT_%5C}>Vwh!UzJC2$3*M@4 zV8El$x#hJ`Qn#&SW5eU_?!NoR{1PfT>5AQmzS_BeP|Sf*4C-T&%`=}NBK<_?C_5!6 zi6E0S;AqT+T$-*VhD*)kBxn370oI%Un$S{HYp!}Rw7b{IdNFwozFQ3!8O;fg-N@z3 ztsY|jz}lekST4(dUmZisHPgNVU>5WY3?dNNcu>f86FN}#a<_G~#)XwfJ1uN^*+%e5 z8N^|vq#aX{EjY9mb3en~J&P!sE~a)|ml6%P=bTF6OztWXEq6$1JG@k>Nf(5}m8|Zmb3}XVBsKrYl{tzPuJ(hdpgUrE0KxQKt zotpv8>YJLza^8RY#P=;jdS65&Yam^v?Z7=Hr4av%w%3&9UR&eA>K83$D+PrmO4`~a zEdINS35ki8Kf?%~H2B`ZC1Y{iGhLm~%9fv6IY~;Qx!m?{YQ?YxV6fUL=c?*z98VOO zb}n;Wb#+B!<1|@$^|-~w=SCS=j%_!B{FRll`T6-ptvZO$0_&#U0yu8jI5IxJ03{kF zm0K8VdiTS#A2GGGb}JbkI?bYEzdvb~zg&BuIWU;(W&1}f^)`1=HCFR{`KCmgZ*;HBrNW^f7+j6Syvyl>0 z0DVG$tQa>wVSG~##|lzE9-?@t2J}r-U%F(cFFoewxpFuFoc=2lPMv7j|ClV-|M{Vf z9^B7A%@ZZ|&j(AqC$WBIewPUJi!^Lf-?KR{H>j=3V}=jrdRqiEgPIa zep3ca(uU=BWB#MOol5Daq9S4=BO{8b0IMI;edG-{k9>TC>F0wAjY7loeI|oz}kS0&nFuJ5l_0dl1RBP z;tMyPJ_A;X^UfXW{OrKH0D%}?)5pnIhKrxx@?3vZYa$GqjTtEG-BF>i~x2=1ddlkb0oBe1M4px(8HQ1PS9y<&5mW^P4ukDTuZ<6(F^9oh)!mL6aYBt>*)o5(o8lETEGnNua+sXU?%ZgM!l!sreekD$-|Ij zb@R~zt|O-2bKv7zCck@NK|DP@FqO?JdE?W#S_^%JV} zk?WvOa3u{?q_wT>0-)fwCiIny5%Ow90j=oeB>_YX5df^N54=5bLEur#+?O=!FShGy z5Bg<7ozc}JW}#qqfT@iFXooRkK$~H#5r;y@+RJ(Gri;wW3*bo0t$S$d&z93`_qzq+ z)6$}Wj(z#^C5-q5Pz^(LQm$-CLQioO$uW=so^_tK=@cjMAbqCU#;W7!qxy$kjPr$H zL?Z_AH-?KjF#!aHz@IZ)p5AafC3YPS=i1|Ohdp5Ra`N)9A(W35PFu(bSJ}eJH2LdijA3p}8Ec$ByITx=$(ot`!*cHpkX5|2e@_?&Swzucc3c7wZ zRGJf5oGNCkq!;jgK=wcj%zEC(k1CB$zdx$W4+sbfssIV}X#}G+IPkquH=Z$0!+t4l zFiL$${XktfBGL6ToM`UIcdrGHb@p&bw-Y25dm~NP)R5hSY%~)_A7Q*31?N3BP}#}m zfzo$nWVD^0Qne%FULEvFx&ga7U*5^m3hpmHDJi1qa!CX;#oB0+%W7C(Ds51}(Uwkr zX@D?(h&d^UN??PrzetT8iC~Z$b^+LmqSQ7qcQ9N4+GKCsp>%F{u9fbNJ=JIJbX>@2 zts5t%m`vQexFNw9`JfOudHAgpgem|Cah#l-)HI%%*NZfs{#?1mDCyi*WK@X>6wbZ@ zCOwtqVQ0r;iQ`>$XgC^vDzD_!lO&|3si_Q-2kp{S07I)b^B>!B;b3n1|IH0%2-<1Q z+dM~1d1vJROAi>K(s;Jah(XSz$iYV=UonV?7Jz#>UDFMU2Ciix(|fwb zCFtU*pizZNzXB$)ntvzt;sFt`yz?=b1|1t4!*p)R_hp8&V@x&z;4cN}Y#L#cC?ern zNPebQ+S=CV&!6WTPNrL@8~iXBg|R=UU>Y|MQh=0WPB!zsS@L6@Kf|qq{>#^|du~IJ zSx}GdtAlw=G?zOt5V`%K%tXBPSU;UL+!IdYOyFg zJC0WIKR~>lG5#Mifbg}cgXRa_;@zen_2Iwi8w~RD{r@C)BJ*F!7znD&2>%8i%C80i zQ$b<9$RzHLio$QL8>;!%VJCH$;?61hkqjaj!!G1*kGS9;V7~NTb(v2?-&=xGpERft+7L3t{dF2i#`v zYc_lk38^#%UcJ0eabz^Uj`-O7q?CgT_;YDnfLjr1oW1NCA~8oA^JL(zwws-6h7>a^ zZMk=|84);fP%-D&BTPW>OxZzbw>K58!Qwhl1Nqc^`V+@kX%mNmnt(hY^f&Wng`=$& z#_Ur(>~6%Gbb>42LOr6{_}j+n1~?RP?~r7iam?CQ({Tjz9?gPdff0d|c4y{24W@7@ zK%)VnZ+X1bK`<577-O99wVk1b4df(0=>LVB@V{6~cctyF--X^IpNbJgrCHUH0#Lwp@fNW;^Sz9%?kI>m>d!Bz zko;RRE>zTXTozopDMc_G6e5p!A{H}Aumzs`eW(|2UBfzL_6RCL_~j;h|EVi#RYB=6 z&c(F%m2SyV% z*f~p`VUmCq{iKi!j|8#=2Dm1V+D?4?HJHUPK7Pwy*+lrlv*KueX{8uPlj}) zF%x9TplKvrVqwUG4~Y&n@O<~!{n+!1S}>UKCJrnx4 z@~@=Ad~x$>8f2@s&`^0l*yt%A>Ji1&Q9BXnHS#H9GPlpv6`F(~fE-K~1*2cH*ZGGD zYgiUJIrD&is=A%>KX3C!VRYf(2)XLxHzaa+v9yGn*s{*ETN6~g1dz0gckqpmOyWxa zjLTr&eXGS^@xW`*K5NLBjub=@j&g@f5rnJ?h-X3XrjNQFZq8kwc;FSElM^{)jpK6J z@KI+8{hg{Aexj@j4P&U8h~?HyvH)>7Ca~TEdV&65UT?6YM2eY1{M@(}<>awetotG8 zD;ZwoWBzjuCcu0;7V01c#K-u$?oj8yg{`1YlMX!%4 zd}-^+jD0EUK4Q}O0G#h|I4_!bw|Eg2yq6566v2D2Ke`jZj~B}%&MJSgDTc8Is$ii5 zh6MuY+eh_4STX>CAKtU{6ZrZvw}pGz7sbsJt|TM@$#| zFkeUYWo7__{(nA@wt+sw_&nAs`Gsn)93_k`k*KN>Km}f3B(Q*5S+ewi^2Dw(s09pW zfkSS=CX)>Yiq+zHb1X$6NIv?_n*bI`jDt!{>{6)n+PXctjIr;3|1No707^(U!k+i$M2+obMBdnoVR`2t^=67Sw)IEqr zN3Zlvq<)l`L7NG(FI#~XW2=Q54j&8+oPmrW8p9|xlkP;oUA*DV@_}OGk+z8q$Sxd6 zMYbYBLZD~7A|krpen5tLPrBh@IL}9x6L;82`aEax5PTjC=A(D+`#CMgy$AVFM)UM9n zzq`7**>=1&am!^|HhW^FFFjJ|>9^BKuT>N~6*VW?}$h>8R>$Ni-3uYsJCy*oQ-Ff~;!*l68kp(wRv| z;p*_+@DT4D4)pa4xDtQe^jNP_HXy%-)T^D!p7@oEw?4O(qhBgbd??}7junQKAK;+3(Y10Q%f!J-YH__2$fmgnc)AjTt zCLSdHawjI31&RTXyFD8DU#VWoT~Gc%5Xgfii~HVwm|@1q8H^2BymKV|9FauI^-)bS zIyzAsz}V9>A7rx(M51LzknDph~Lg`P|XD15O7k1IeYj z8B!Etw*75D$nE`C^Z%G&61O8a3p}&N*ikwON4o2?fuMU_tb(J)v|#j9-_V3#-3=p^ zZA(pAzWB7^_&U9k3y@RPLr=&TY1k-bFvZH#AbB!3-@Bu)O9VJ8Hr_~17JTsPRwRlA z1_c=Lrnal@ZViQe4Q&k#LLQxrD9}~(@}F~ap%~|a5lO?t29tg}4Y!O0a&phfch6?9 zyzko$7!rx6lelUKGgOa*cu}&oHC=fC*JN!tJNsSH$M7)9<;io|-GNtdhm4bxNB18y zaiNqrfT|q&tPLD$(5A-)_#R_aX+tkx3RL~Y@s^lYb7@IQ2k>IIyf&Zw%NLpg<)-}) zv?oEPG}UOJ)SiYHdUqo7YxH+K@ES9qJ(u_qD&cijfgLk5)=B5ZG3`vn~5p8X6j|Ku_oW_`v`Y zm(zal#?b%hey0B&mxbIWw3=^wjY(}Se+QOTr<)2`29FSlXFMO-c!RAljIWHiM+)MP zh6L=wv886Qgkz-~a%YjMw>%PfRFLs?W%K*q`J1Ek+`9wEh4-%|KG5qp1y3!+II zXZq?zk)aZK7)v@Dw+OBLa@??L7}_aWzF{Ry=<;+jfao#uP9p!v#765=&8js3$!xuO zG}f{C5M5deZ{vvw{isUGIKR8KxVt|Pl-ZrW+%QGE7lnB8*LUjV&+y>=yT6>#sQZrf zrcHbBh9J9qv)iFcWcoubW1$ zOj!-oa$Lbx_mLV=RlmV(*`GbONiZCZp~EVq#!?u!L+eS(KyJ*Ewuw{^K>60e3&+V` zit{x&%qRo>tSOE&J|a^7_B1s#I7EHUrBpXustcrh2d;`qVj-r(;j>73!YVU{`NcVH zoiFXw8FB&$Y}SYxk`OkkTyE6(day3KwK0e4k$Vf z(OmpLn%e{Kb}D+_F;&SA+bk>^tVLIOklsfo1`u7Y+?(xVJ)S;!!}cRxBN6VvPvR2u zK5c--nnTD%Q1mD=e(bXVCHdy2uLJ&u<0GOf+~$qfzbbM=Fl6|F4LbBdh@_M{Sn>B0 z!9r=f+|d(;zciZQxpR{a&Tf0Ht-%V&B5H&~*izKyN*)x5$4TE1Hr~>o?FlN|IADQp zQrM#`D#KZp4_}_?ve~(yf*fU=nX6zxty84nsz3Qi4f*~cYN%jz)!uq(Irz4q)UA7@ z#)dL_m)0-OS=`bD5I?LSFpK%6&2M@*#;rFkPM&t}taporuqlNG#r=*BRumgM+IMN4 z*&hECTth?`C@i{Pzgv^f^GBn9nGnKZ;Q`TEYm>@4Kw(s-*3WR&Wi~bs{JQB!9bs>c zYW;Xd6GTjvVj@1d_|W;dv6LNDuQuR%51hwh@AFn{HQU_se21IVHEXz?%e>=qYOoND!s|mo~SB@R|^eg89xhhI9pwL72t8wy@ zxL0EW-_z#PR}!KT^1%yOqb*2S?{y0rzKe|LnFxnZQKip3w&G&YFQZ`ZT) zh2e|`GY z=Mq^?d=Bx`lP@!L?TUr+Uuq={#;#~w?HOednFm4fMtL;Sc*VDO7piulh(jf|n;%T$ zR&1&<;+SXds_r(PM)G^k=iJZpi)Ufa9=01D$G#^r^v>w(ej{$`1Ygtf3YewW`m=x1 z-|e@21TmNGD+#i_MU)J6oboqd1|hBfCwJ6u!r(;{3GVRhW}}=<#@Q?G&2#S^tl#^b z-?Ug4$@AO!b&QZlh6GjkGIlcNc;A|+Qk^i>sg>)6g0MYwM-?3^4H>vX8y{y3YKH9InkMI zsN)*+*Al{`&*^m=SUG$(r`v=ETOXfJm*@#}Gew;>JsA)Fp+pputBt3x@h?=eXijsxGr^E7lq@R>cY={xOn;K~HMzuVy+ z(wYjVa~jQw6qm2&-gV=o{Uy&|q`6n92A_H;bYoi{7`-rpTBKUn!+v7UCFGc+hN_)+ z)wo?rg6|K4-b5%>3(ZXx{l_h5%u8N{J7YC2Wj(JA&zCDP_PxWWVVNbrUt!@F>G<~S z#0xQGERD{fB(vQh%Yv;~{W|LfgdB{Xf(M1t5;6 z{DlJzO_=Z@HP%dgwW3+723eif(8&r)l4PLs=V46$ZL%!`a-Fa$gJRQf;xEUY zR0-rWvfZDrHtVu(k=I^Nty1IIsV7Cl>P?rG6P!GQpROCF8c=0&U>zA3;aA16SbSxw zmm`S$R|Y0}&xs#7Yj!^xw@&H%`kPc^<>g8(uQ2Ld*Gk&-s^ff`g}^6t{CWs-Kg3;z zwpN?RFJ~{4S7BmlQQe_LW;)=NU%btQW^;aAn=kcLtDko{Y~Lz7ye9Lljm3b5m-=eu zhIZ1Ipl1(vI}O(H#p{&6CP<|5xh_)9wi6ls67{BXUAWL#zwbT!^5%tErKQex7Pocf z%6$R6SSyLPSMCC33y-}THW{s(_@Xi0`}xa=8)%<5k(*k}Ib8v$DrhldJ^^U*>!DHW z!AD;7U7{=M>PV7|IX^!Q78x1Z1`T;NwiuYPy+V>Qhwm7@zi#UWjscqKbdhYBf%)W- zPftX&+?>-2*P@)b;Q67 z|8$7<@P@pT7r|sZkSZYwDFbCMUuiq|N#DYuZ(;}pjCgj3FsBh;b9)xJ+&kYKqhHEm zH|#=?QbChAtLiVs%QA0~r@CK0akrP*xOxski#ZPgoIAdcSf3}$sVCIQ1lPD&3qR{J z91JK{#1322H1!ap&_v8Lx@!D^nix>(qx(!|a;Ur^5eg=y)O^7IJu7 z2i6*Nzt!vtnZ*Z*{@~(MU^joGP1Q_I$+@ea#6fRbz!Ha{Z3u}X%y`PpW8&5gyQ#!b z1HXhV6((V8m?j0SoeYO}!~k<=M*Q`Ob&8{bKy(L`L~kkQ2#)wH@6&PcCDp>Gp?PBj zQs`_uM=xhwfE7pejlh#sATsi6n!wKq9q$L;N@o{&TbEyP9*g2>i=bojiWe8(?nEe5 z%-EudYZs-PQq?-kEF~jkV`;lQe#~zyJG&4B3`1Z=&7P+n5a&)L1aa-xaaUx(qh{Y zAL6sS{&6F=cnbbjq{ep*E<8%Rdezu0_=Y5DaI=cG)lCmblW*44w^@CQZI>rUuLR3C zk$X3xz;rC9py?^7bey&#HAJ#vLAB_JT4pG>> z{tEAR^$IvU37$e*&$RZKL2M@1(Wg(E^9i1KqI{wrl2g$N>E$#7eHcPyTk)IpW(s`a z@#nv|IX<42%^{snEOFzWKiab8-FJJ!2Ej;85|$Fp?tSk@K^ePys?guG3gdrYj6<<> zxDHUYR_~|H(SemasdwwUcqzWj*1c6LFM{|};`ifk-@8rD5jH}?#!ZU-9y?v$sFPw z>6T29LK2vau|8)6JGRxuq3|KUcr1DQXoS=hb2sUvF7n0Zkt=F~qG0Zo-#xsSI><}0 zU=lAc>$2x20&W_bgU@?hntBL$k!ZHi*EWaCh%V3v$ zCFbdvZBy~v>Yq{KvH4GS6m|UM3T6M~<*A=t(-VkiRc&`eN`mm{UYWHeF;MtKRgUGt zH6MO5h4E97s~T924dNeWlVnmU9VI<6}gXN6?lZtAf6KbtcG( zMZ@*4>6^n09(>zbhylv=S%`wJws)9Rk9TFq+b-#A>%B=ck&6zWeCH%2RQpDCY(BJ( ztp%1gpw;h8=#jKzle|R&H}sqB#QmAChLkVjZjYgSny~2ITuY0TSmFPpgy7NUT*|t! zyhv)??`qNEw0TZDaIbL*SK+Li5&Km~iE-K2ukSN569PLj(fL!q-20r(3TtKeR0_h$ zZ4K-8&AyyyBGUeD2jEGSrE#x`_!5?lg`VgvK#T48A&9Gz;@|R(@uthV7QCtUiV8c8 z-05c(Y)c&YLm=B6KTvhyMjD|AeN8# zrR|KA5no5jWj_}LG!K%*2MA>a8Az#~_0xq*AKAFtyIGgn_tooDJbk88{($RWjxckj z&eqcI(Pnc+^^0}o;?#oF*dF0-f{Kui(^%-@{E?dlmS9rgGyv;p$LHp6ystzu+DzP=pCBJ=;y`6ZN_fGF$$cwV$)~1l$mtW@ZpDS1 zHA`E8npA4L5@I$(`&%EKs#}<=*k_J{0tcxeP$Gqck$m7sVQhM&Y3Iil{lSANylgKK z$6c&OI#kW?m#|4BCHTo_RSNXjQsCIV)P%bz)|uDqEzH4c#M%mF41Cj2$IHU&t8JZ` zkr(`ASJk;j?Pptr7U&B{4TQc+h3gBcc9n7q?0W--KQE1GwWmIMl`U3rXyt2M@TOVTFQT1k5 zztoZMzUV$hYJI}{cvs=uS0(p9FpFJ5v=i6oo4lEmFEC5XSfXhh&9`KCMYK4phueNtop0+lbM3}kNZ zdzMRAr3x>ceSALZM@mY6=M0WNfJ8MP2dOT5j;|-2{EdMx@X~&r5}%Z1zz+dqs@4)^ z28et!>P~XyrAEtV|8LlGEP9h-Egi=z-|s?W>uhl-V?5BO1TXiJH{XN8qeG45ZY~~1 z!yt)pqGcrgAso9%#*W%A`0<;uqf~ExJc#E*t?W+Cc}@?#VCGOR6#q$tu-DzRMCQk% zq-g|*B!gc}>VuSxjQU>*&G-G~?kv>>1d(+r4iQ$VamOTYTa={AA&!dg9#Xi@AN+EB zNRfHr`YUyMC4RJEOX876&?}9N@xw zAm>F-utKXRpPm{zdcuuSGa)?1ctqmxJKAhfp`SCs%(%Dth;vy5yU?QHkF(czKeMey zN-bShR>q8UpR_u6gQb;b*ZXX@l+SKE%u&ZzcS0lSVvQXk!!~Z;hM_Jd*e|OgAc*Y0 zV16g3WgObV1(B~4m4yFv>3}CSZ+b>%^CrCeETST9V{%^%+L!-ctT(jue70CpES?r0 z|F>{~v{1!p@t5ViJ7fmZbDQqEY`I79gcn<1wk zpNHTNV`!Zn0+yD@-~acdTqIzbZ8mzTi0F=jvLr))&%k``o192CJ|&Syk{Ttm#Ispg z@g69MbuNUAAWTU!b_dH`go)?m-G}#6%6*9Wv)dB+560+Ti`w27E89@mJg;IzRPNY5 zc4*JWjvR?-3eXvobZmIN*4+|T*E7x}?x|YJsefkjL=J1WHW95mNaghcXqyqJMX}-! zO2D^~G@OrD^=#NshfGx^5~^Bd{P%yv6nl_LeKQ$HcwX@`ssmvnUxzeW^HI$YKULt`VQ(y{B9bMcwplYUFSR3-pD z@8;e@t%k&clX}mC;Eab52JvV>o$8=|eP4|E5o{WGB4KF0+<|YJJ6yexG50a_*0nV8qLGl)+swDnpwFn}GSA62^s9L@%UR>ek zHG+>}jPv5;CKaI)Z70W|gpCnA_<}R!7QDYMJ)TJ2+?DU!esmoNmSSO+_yb$BcsQIs z*%?3w1|hH?yG5IQLdUWI(IA7J-dbaNPZY0sJS-HqEL4UZ3r`4+fHb?m-+cW*r0T&{ zXNo7PLm2kir03hwOu8}=;~sjV41B`G)bh-Oyy}Q>$;eF3DVk@zek@)ZZ_D5d?N~$3 zkBkZYy$LSr6L+A;C4}fZkl84ndICOG)weor#Mu(^p*{{c**9L}S7*Uo3>a5sc8+id z6dg)W3N?00)+LL^bz}1@rQ-dZ0FGjm~l8g zp7wp@*QPMU&kR{zep}eAnx1pA2kPya42-45oo9g3Fm@LEecl$Z{0ISQIa3W)2T=qr zgowo&9h#)U^Sek#c^18Lx!0XSMhUgNAYQOA=GUy+oG>A)tqy?_D{CUQk~TERHr(-Q`=O;$z@fZ zcth>@Y7%wc9lp4jJ=PHJ@eW;;VOC22VE657 zCCwOC{A8v02WgW_dTMEHV*tKa< zX{QjQoZsvM?)cvKIQvuio7LGasyq-WQw?KmH0ckS#DQWjuB@q?3?{p#$_jYTBj*M7 z{sl%OtYnLa=UBK(LZ}=fw5N=~6x3+3-8QMeZu=0Yslr<2w5QA`35AK4#gu)6w;KQ%-@f-@e>UG zhSH+zAhgD>e}!GP-`V`R6We7-@E#77$xQJ@yW+)ea&tB=G+VBqHfNmx$|Q{XVSM?J z=Q&<+q@gP`8bsxH`mOH(rDb=3V$gw-r@Ah%Kg#a3)rgb4VRx65L4iOh!*M%I%r9lX zHj8Dx9&Ez{M>}pq;7^}2Vpg&QO6zZY;L-m1)TM!X59dYzEKpB4gAXHPG~Y%oMWCpaTWV$!EBBSBW3FIpq2gV2Df3SNxcyPW+Z)koU(Txj!r zq9(Ox=c|a#97+0zhWnSB)yriZ89oTez}}q9wqC*RBDrmtJIbr6Z#Y}7SIYlqYy5r5 zFhfB$!*ds=6w~@|N){HB0Gv!2cZ2sbasjP5g0kKTx1KOL-N&XGFi^f9K+31cVnUWelnJIIBCfgC$!G?Rh|(( zm-JJDqpb6^E7Qy1J_Vw=!*cuAu2CN%g>>ttN7C1-bP%x~36YXA)Fx%qUrhm}BrKa_GxzD~eLk2Bm zN-;V<-5_vTU^qmYrVb=c_x>6rsnhry8Ct-`Dk!zfhnrsJ^lEI6~%W}R#r z0d|O)yc|@OddUa1RZ^Kz(P5HgM+MKmvQxxKEBG71Qr$V)(i;DV5O~q%wk-J+x)R8Sw8q9_dn3s#jMYt_(*YLyin5yuJ#D!s} zeB5%II-jI@N`DfEpF{9Ogi$_$sU~blLhlJ?jask;$Dl&HYh@^%b^MDPYLTf5l2|n< zx1peY=Dde0y4$<94e?TEpWl(|PrF0wg4Jl|T<;_XyHOb|9se~VpP$Pb+uIT6p6Rc9 zaj)t|y>C=O; zPiX8g8!<4)QNivJ|I@k16iF8r2(qMvR5)2+o`~xllDi6IfpVDvqkGg48y@?UsE435 z^U&=i4D;f1NUWTiaS+b;CG7N&re(nkZIg5G#UXU=Jfhb(XwFY}4H16kYfDEY?~GFt z{FgR9?l%cA;b}{@8My?=1oI3CL^()1lGe#GvI~oYAK>9YPi%If11d)bop9DM6{0 zxBYd2B+GU(b-zx&*rD`^Q*jEkasfNUK84h_Aa}V^;6uj}V)o@Nn1uJL!w zzNjK3oGB*A)~I(6;etd}m|d%2yLKmLH??-UL<`T7B{<9lTx%3+wnTl~j^?%)Hd*|g zq*ECVp})O-STQ&ZO;dbrUumNswt94?^-#xmwsPEj)grUsGcgD4L#`E581Mr!gUoI1 zleMZSA+1TFHdE~-L5D%-xotzAm`?xfI9$WNJ#;F?J8s~e`h3In1LUmPR2vyzk50%)g5WkthpjbFqCsB@> zdhVGr9D|>LleQc-Xm_zMtMfP~rk?dig7Bpra~@9@WTF)KHS&akd>SWGV_=1*#j*6o zY3xF6vCxKC8ON=VAe903j}nYS`MRCl$tEG-Y#G?lv^n{m671Xg2{ysguN_eYU{zAW z{%~2}oL7CM_lIWRG44~qrpg)7`*~xrFPA083AgT{ zw3;0e4hK65GFx{dYWua3?$o5y`ipcg?3q&94(a6fBZhQ$ijV!Oi`$WZUu8JSPI8rz zKl%tuqt_S2*GLgdkgc-NQSl9eKs}m`3m#|VX}_=hX0#P}vtD|!E_z~#6IF|PSgk$_ z{a!rWBtnO*wZ;B?5j6A1vfst9?D8j;n7>EuerNejV#sdGK#^`Nz5yGAk7H=c*_i{X z`&e{ibz=$XRwK+Ew}gF+Th(98aGk0x@=R{vP;Uk4DK4;+oCsnz#)&w{^0?ihg%Y6~ z*p!5ZLBRN6_6kXDRSk)PlO2wuW$eEq58ll0v6zeweA*OC-ki-jpXCYX}RLn=gqUBgpTPV!IU-V^`6HWZJqM{N5f3d zY|l%y79!pR2jv9+P%k!8a;mnx(?&p7Gai)yoEvN%Xqhhy3p1zF`B`kpa6@-!Z?#@F z;^1C&mX5=AvajCVW+ktXgh^(N9C#jANN>{ofpqRtUC}@=@iOx3h`u=!TU*zMADStm z3f~j2_iua;{d_%16ynB`22$Wi$s(btmNb1CljbnZE7lb?n6O_~UyNK8 z?&xvu-c0eQ;V?M%qj0F=K5G3<>X3~tv7p4C)w^~LMR17Tv7~A7H4cT1e5L!Z3VEM5 zB=8xEypdyG8#pp?6=gt%fY+mkw@#O7VcOXF&;8F4Y0We)yEo0iC8XRmaV3cpKH z?91Y!ZGJqtT?nKXEe63FJz||*&F>Cyw=UA*dn$yg(kU4Fv^iS5n6pQy6SzwS`%9`2 z_5wPtbJe1@mGA#K&bjQ^7-8(_TAQwa99y7XynOJ^;Mb&x3vJn!IYfo0_cpF5`=)Do zN8Ke?XpqG3JG?yi`a&GyDn8((e<1K^xWOYX;_J zV4xEmAOL?7Vs|c*b-wZR=96Pu%aES zyJSI*;Gs>2oe{qfkm^GjDrE$_u^5*n(FeQ4!^;SDwidqk^yu>Wy}G6+4}sT#zcqn5 z0Q(G_t^|8^SF#5p<^#d5Q#vslt#`JR4e{p&!YJb9N*pBs!Gm(xDcEeIWAu-$Zp!#A z>9p5E=Cs+$LTQTN!Fi-^5{Z@3dMz}U@ElbyloqMB3qLknMY(|e9tE*n{KC;aGbC2? z_a>W=oMq9nGZ#Vjl~clY zY#5-gY)8>wHyJHjTM?`?kNVp(EKWSv57q9_&x;q#601}c^x>ivPVV86h_a+PYq+Y< zG?mbB&s*@c-SkZzBBC>NJyrtX1CFK5gHyWAPBl{z;NS@7t@vtHaGv6HNhF9K*t5O3 zO=NZ0EV7FdCiuwJo#}P-)Bi))Uq?mtz471hFtj2al7e(2-3^M;C;|df!q6!oJ+ugd zfYQH>-~PcpVdF7m`jJP z;J8-8V|;FngV_~5>Td#1GmaVVs2T6ws~St4EJH`#zF~K?WLn}Umh5OB!TX#EF-UmO z&<&g}j>}%}$nX+dX6=U3J1boTcZ@VDq~P=Ymc?w2Qux5uGt!N6Jd{Fpa-0*7jvIMM zYnX!@A#I8kmYnwYY0R%rc#Q>dEow4dt1DzMz$a+WDd zC8*AiMR^lrGJh_whH+?A6dZ)iG^%63ZmuaH0%< zPvL)k9y(yHApDaIOVPnCUGBX|TiHZ=Y91U}Dkhu7drGI)m4A>ec;IH%&E5a%%|8au7mUNSj~v36vWnA2 z-4tJ=jY=k3pI2b>(GADP_4|a-&;OiqOuq0-#&?F_blwVwYpiNV8!lYRQfXQwy_y#w z={32>j4a?IEt=_`qk0(cOqfk+Lt3#wvV3`Rw>FaEV%rdZ`-We@EcIr&A2qR%OmT5Y zj&U14kkUc3>iMmL4D)&Tp=49>Bbc@Xf(tqB5}&alVT}A|nikU}wsZ3MJ%SPUj@kTV zf#7Mz0F64+pqby_%|gh73!z#*Fh8^y&QSrrFU!2&s>j52A!`)KF3;QMnmQ=i5WU-4 z;&PQLBx=je_paWkN+6zHPQEhAcGGtV9VnnveuJr5dSL_erTonQ{T8TvY*n865a(DI3xOZ8?=2ghNADa-?s11qe$i? zMHK6#KQEnsB|%jFX=mEUl7c;pA3e$|8eIQ(Y9%1IpyqH{WPVb1CCiW!0qLvQ$qa<80D{l`ch zX5ttcb2NETN)!lv->l-rJNB`TPj9io&BqnoUp=g4<6+R;u!5!vOaek7a(a> z8fto_E&0%SCL!fY=)KR&1pT`+^}jXA7?IZf_ipxar4N5H8$f)H?^}E`{%5n$*Eh$7 za*Jop|NMo=A9Xy?*m267SvTT-gOF}a5u5UvqkKp!D75?;;|G)G$vrdZywjeLu8l>L zHE*XxK1sY;>jVZBG%FI6lPtTj1)V94YZ6%78wAObRCmr(V>k2Abh9l#n(K2z zKof5}$SFy&QZ@Uq1an)E{9$I`AUH2jq~o+t`wD(hXN9+NOO*RrkG1uxGn?%Q0|!zx zHSo=jmmkU9Hm-G|#~~yjeZuBLf07z!UH;J&u?SX=2?u$(O`e8%@uRm*n$PYB_~yFJ zR)rMw`nwhwJYjqeb_g0Z(7cD227a0Ock-k~%(-IA9A8+2)y4}?IB3V}q(o?-4O`JB z;o$122z^X%qim)uB4t}}l-P!YkOrn+7j43DevcdLLEF}|F2NKD@8Tmgs;RF(hr+-o z)BIshiJ?n={GNnW&4u-s?3VWQ?$=mTi{G~0I^L|+u;O*?D2g8v3<}T-*W()TLmfB& z(Y5T9O=Q=BE4p7=Ho@eymAG(~YY-yx)NOrfSi#r?mUUnbFaSspz~SgYlzoV_{4?!` zZPWzTv7w3b!G%%5eS-1Zc1sj%nU>Yn*|QlMEke~nYR@rp`Qm(3@Ygy+B_$+myf<scxfI;inUN0N(n?Oxdv3A4hr z+tLQf=ZVSwNxdkSM3{rJ%V8X`#>n=Au>1jo(ztOeok^>;QyzI>v}uA-^-8SG*Y4@^ z4RB6k6P?1orqYhzg z^vev85L|57fSIHlfoRJ51EE&FJ!@IT-$4E3MY>q z9o*TZmT)zu8>8YLxeY&&dxzCC8P)#9bC~P2VyJ>yjrylkxO`^z7thseBG!)LFG~)) zorE-5;q7o7K#jNR}dgjH%P4X`ypHwK`~Fy_9FG*t`f zQV_}r>7uo?CcHH_c>nGf5B+#&kx{q5ye;wmkUFUHoq-4^j9@f{6A?OFyj`XUPW}_V zEndpp&NfLxPS`jZtv6quWZGo2@2=!ggi{**8eEQEp&LY4<{OrSnftZP+F?FrsHwkWShj95 z=tOn_FO1ELt$C^qp{Kr~8CNXUp`WA*sFt>4BoIM+K#6ImcL*2LUo#j~NMM-P?@reP zq9oLtf7fRZe2x*(bP}Zejr)paNo0aR5yvM|C;~pN%|8l_n6?rgGcQ;!zZHd(oD|IX zgvLc7?m*DUo4-aoZO6?!xjOfQgot}!?o3iDuJKLI(s&q+oe&S{1_qp$99Ki?)|1(u z^vn;qx%F^jne8SbcB_waNPHSCTooNY{Er=aj-bENaXkHOgD$(HnB~=bqRC2anB0rLViw-%ttsX+sk&_^nUq_bK`r z=N*TJzNn{q9;CTXC(%*NT$4~WIq#^SB@%AfT5R2x4|H_!_hmNqkEiy3_*DoEQ_IDZ zYnW#u^LQ+66t@^uOF`Q{Pkn9wJa>@*Q!@5;ze@|Yt^)CYOtf#Xwu3=HTt znh0sMwh%neG~Dl6?ABjvVe(y(X?vvBcW>bfKUY1gt9{UwD4#2l_5%Wuo%g-G3Er8m z1rWslxI<9gk=ZQ`I1m5*OI4L1go)6SKESdbvex&vwJqiugqeXhusE>Pd)?rZq=-^IRT>J7w{uHAG+>&RKoTtCe&+-RugJ&%LX&Dcu02D-RJzZC%aFFx z2R>ktEngIaJo!m`XGP13*ZQ;xSAAsrMS1wU`zjVR`y)F%g}*jh3MqlMYv6?89l4UV z5YqEX==1`+tieWpLEsIC(yy_iW+gu}ALrL--P;B~=clpLucBtH^|SEd`x%+ZfxI_A zzE3Ca1>D1Ph9`zlk^%#1vh*840I(?V{TD^S?E=Vp3rJjs76AMZ@I7?^+_QU~on_4* zigu0pnL1i0gMM@8obNkr&mJN-*Y`z%q1tfF(%+t4+Vo%Z5bo~hS74QF%W9~QGJJti zTFp?-i1)atWH68z4O*V^=c#F0Wvem3Y*5%=)(#TC~Qz737Mr|!kX}<`0vBb zQp~Ls(T*QpRcjyap4&9%KX$E$jR*405EsraZYfWb`GyP8-|~!bYt!Wvp^F{25oL-A ztHW5u3df=`@3^`+IzTHCEdqDpSkpg1THtp2abZ2<*2fE>q9BY6VD=FM7zP0h0!GQc zH&j!@zjZr?Hr><1BdfAFCDc%n61{SC#4#a47QfkYkszs`HtNp(WbET` zUVFSgG4dv$;Nq-3x~lGPJ-GPysMo@LpyPO#3h~yK$Lp<-_oox{HQ1BK>p3R8#}{5q zU?I72S1rOea=zp2Hmb+t@cyU2-0{M^;SD_#QZ-cZ^=lDn2BO0w|K{|Iiwh2Z8!0Sc z>+NRnB>>c`R=|ikfXE^e5?vodn*WY{MWfM-|I)z?%4M&m(brO|IZj@+wzU9`eB?Uw zQ(?5*_5z1v)aP##z7gW_p*^dfxS=gDot1mLjZQ-M*;?W+9d*xZSs!Hw>7?C}XGN>) zYd)0hz_0LAf=%oT?C+#)e;>1}+f^kFN|VJ3xGFw*y#Arjba@_x&ZuPG>_Kl}?Nf z(^aY8WtKu1XT9oj;QUlE`Sh7L#v%Iq6mrnoQ)cEqM(hg_BkpLYYoh|=+v!XqET(Uy z(uS!^DQWe8ZVVY07zjM&MJsZEF}l*~Sj6NpAuRdL!;NWdzfw2fCV4#x#IS7fMlNA$ zv4d4Eko(RBT<*kCjnMua7zmqnN}3ha{Evr6nG~IloA~dJN{p1DntKqxB6zrOGLPmT zkr+HYW%|6#A+NDuije-t<7+TPg41;8GuR0`_ZlD1DWdFDiu=PK^L!}g@v3#BB%;z9%`^U$mv!i>%vc81gqD4YBX6~1-!{pY zh3|U$3zQ;G6rfy>*OJ|2h7Tl$6buGF*3#+*AUFu6a&ZF|Y0KH~uYdmBpmjE4Bqb#k zaGVnMyE^EWtqlaf1OADAwEnBli@EHJk+sBx-i!5`cJ=FBcH=HHJSOc|#YX8>ww z!NsStSR5^G371=_J845A!HmrwUS1h$qAJ)} z+_j7K@8JLzG|FgM4sA=gLA9u*~t=C zUtuV4+unz;XMh+NH0#tI&-!E^u!2=RTn~C{9H#}q-l(3@tK0?t9{T!fP0Yb_>DhCW zFv#FfBzw+Spq>&8Z0HaUuWO<8pm|xtWx_=|ZKo*x;qS^Dc^|(MY280WIr{3I(b?AkCKIGdYMUuv^Th=K@QHax$o5b8!J-1;QaY^`_E)RYaBg_ z*d{ZzH3iG~TCy~n&c)}9fN`&HpV(%{)okl%`!6t{6}Z*#OCaz$d*_pd?tlNPLYOKs z<0J+E01?Bv{+1`ez8&&=!)&fk99Vxn(gsQl0l}G)-*iTUJBsH$lTFU6hxc_QOOS`o zSF>N%9xo)w!C?%p|6uP&9kN`wrpT&3j2ph&p2~m~Tsqg~;~>lie3rB2&882Go{GLU zYgJxm@Mwzf5N=6Jq>K>ZpN0R z(fJ@s=#3ZF{!QBQc|WW8t|ogQINASMJSj)&Z2+m_m3{{OZAl{AkzM7Dk{W> z$?zM;iQKI_=k)YHN@!s!UYc0OscFV?@Cm;D@*DHcKCk9t^>uWlXJo=g0P4EOdXBn& zlioNBzvkRQl+IRl0CTWW>aYJL>as}oKAImFbO0@&vQAX`2J{%=@TMFla$LJK&p z&Q$S3DxV3xF=M+~%m}`{J-r}vPU2uQ|8=H*Pi7%45EFJI=7Qh&Ow@`^2sg)ZpDyd1 zUfu5BewX^>8@0mh4XN~6F8)4!VZLq z$`C$P8zB+I#nAgY68L3c&~tz14iC}5qn{YVn@H6T%5T*l6S38sMBSzb8F19UN3GhZ zxLdt=nHwvK_#~$Q&`{7DhFF_#RY2h$)`>FE2p-+Q z$OC&6pK%BFJGsAt+sqGjq%jYl*Q*(-XMMx5)dxoF;eG|??^HIVamg6Kmo=ouL53eq zjJ5D<{eG=X@bE)yqerio0Sy>3^>2M`<`a7f(M8z0K-<5ij>JZNU!kd(OC@ExaD+HNlj*;|-> zIX6oh8$NTP)A{r}rSL<^YE%eYssdY`_lgU+UzyC*1{R z={s018_WwUN%BDBJ2SZY55BEA`otX!xrBr!-zLcKOr~-wpiucqk3VxF(s!ZbsX>H6H_T)ww_wqox)W)wB}-1YpU(NAkUoq)))LS|S@FKkb|I3Ud61 z#RyB1;a^`CeneP>iSr+a%zSSU3~b$mW`(T(hUDFjX-hz>zBn|H1UV*m#Me0Q;N^?UftrWbjAtq#~HlH zAF@P&kzZWOQk#uNf@_LDbHyd^!cieI)iX85mAVgBvO zV+%|w1nUbVZ=b;zLwD@H+LdZ)prjOn9#@)%*Q8jjk9w`xHCWKm5`f@(&_SlPP`_@F z5Af0mC#SCeP-+Gh&=}mJdj&~-KJukhN8pb~f8!Oy_-FZ?roIqDvD;)N^r-DbEQkF^ zaK}qG&s-T2gL4*v)jv+g{$`^e)BFW-c^|~Ej-HL7P2$N(WxgY?i+bq#eWWz%KT+HV z1TNomH41PYAow|;-{C?8KVM%d2v48^YU+)bt&rmO4Rh=g8?N~$AL6jqjwH;|s zy{~mG{v(a2vZ{tX_y$`USo{tZt+(^eaKHFaYy=wBev!HB=-&iPxeZGMur6MUPX3&T zlg`HjxVo2>Y`x6<8)@b*gClJoWnmWrtTOF4nqN^IaZrpRZM^VE72u3J@C`ERJQ-fa)wlFYUKuA66 zJ~+VHGy)nRG;p#WNDTvw-|ltU9Ipr2a_`ReI317cWs*a>_F|t;UHaSu5Hq~{U+{Yr zs;76n0p0#!BR6&l@ORskh-8#^4f$XB=}5xpk>l2JA#B&CwChZonWD5#|IyZz{YdnA zFQDltBs2g##BK=nR4hW`+A-1Qfd|)~n|S|cjc}!)ifQyD^???hDGM4sj$PY*J7V@w zLcSKg&JHHefEXOJn!65wEdEg#gA(g>eg~aY9GskQH`*f48Ci#s*%F*EKNA#A#sjS& z(nE3;wqHvhW#xD>APSy67}Ej>E)zR@_j(QBH<|%5pE&5ubx^8y5G}7t3j^erCt4Uj zU|!pkoB3x+oT$8A!yjP77$eVFEe_ZLlpQdbAKJMq(`6?`6o^G6v>&0D>c_$*%OJ)a z_zq&~t630~6TClgz);cG*Ke`Ya10dAS#QUlGR-7r2e`>AhRl!gLCYfLuCsPZCM@zX zb`X=?yFF3f7gX?o7>NUenB_V34EG7CUv?;_cbB|CkIsb&Cy||$_ZG49PR1ij-`OAw zZn=6w-giKOr7pmlx+6A|<(siVYgNdSCD0yL74EssZQquNOhJ553o9$MgXOXV!G4UNWNIA zL2*ZXMex#N8FhSAe}8|L9$Z-`lo4;=`)ABXOf>)F?kRtY3B9SvNoD|D-Q;867X3Gb z?S)>Fz}27~ci1}oUsk~qjvjmmuvy=pN=AxD0N9!AnAwCy$Oy9=xbWpoBOxC2VsYS7 zGFl)xk)EJ8_0X4IIlbLCoBoS~>MK25*fkhpW`s~S!!^>pRNo-L9ic2ua#&OdXhr}L znp-_`#wcz3E3bk|rQ@CoHJ=rm6m(`T?>6B6NRUBE3yb?WLl%YQ_rm`FydV5NczH?5 zEwNb-GB9WSw>hUJfoLKFT+<&M^l3!D&5joBU|obpo>9UAO}L@rj_?JFYivO402h(8 z&u|#9>WM&z#Xg{9LO9TS0q0DnKAWsivv=>ur4uy0!zarNKtyn*VccEMa>b1yQjZmD zG$o;Ts^OExN8%Kafsb$y`U=+(VA&unt_zs{g6Icx!1#es+#f&)3Dn!5GV#z69#`wY zSdQ|0QFK=VL9M2V2d7OoogWXI8SU6L_-tDzj%o12*ujnsLGS=> zP)txsNeLXL4p3At1Fv6OJ%89i;g!M5y=jo z7r>lbZb4$gf;jaG7QmDO7lQ6XN4c=DFp`&yByt1;8Vd0veE*!lXr%@4F*?3Z>M@+W zHVlh><2Hqz$0A6Uq6lC}&`(L1&7fR98&e&Hmr4#BJB&7lyN-s zBM2S{y}?t5G@yEh(jZs{|Kcq_3xiXu{e`ybjS9=byOe8J0)xQA(y{3_wGzksUp&tJ z&lTHQZ*wA{8TI)}f|jcMPyj%p?duU6v(dd;N($d^gS)vN z{wva5b)Bizy!{|mpROplV%Vi0J%W`(o%c z;rx3YgZ*iurH6tMy1P#TLD)bCKzjeJbL_w%4w`L%TV^0Uu6RuR%UCn70S-Fwjj2cN zv%`H#rMA}0`9_j61q?$+1Eie)dzIe*k;wqWF#XijR8A#BPLk`~L_ozf);7O$+rght zMUASj-Em=A`6KD_%T9*zBZO4W)e8Sxg2f>TGN3zaKYtz(aQ)XDK&>Dxq+bA@qK35_ z+?uctgSe^Sn+WfWf)INZz`E#-S+{HaZ(Y8}vz|2zu=P+s5vU6!0mZso;}ru*v$25e zy)?q-%k46&=LeJR%-)Tc0b?^v%_{@-D zC!OOJpSjy+8zP7SyQd=FZ^*owiJ`BU{+N*Fzo;7GgGk_9067zjH5x94+%nh?lK%fqE4+{95yX58PGf7EJ zuSYN*pSMOU-2Idk3>Np9zlSxEtA1lB4nm{S9>)@Qv@xOG(Te?arz2Ry^n)G^Xe)bVM-fyQEYeqSFwDVuxtzT1sxVVx=(-#)Fe694e3fL_JSUSn zF#3szTFVZ_@M^XIpiE+s+=JEv=-gp9R>Hv(w!v*I>ImCSZvUHo{b$G7wM6!~nEVfy zCJZ5>)6;V_AD`}7N1FH*R*wj!(IG$RK|X$}Tu}sQsBJvpGC;DMdGJ6(St9_t91apZ zGB5YOZ+(g6eZSFkwS6^wj?ls;d?socXvqB6hAj+5{~F9s-yjS*@i8*n3vpN^cOF$t zn~}l3;-S2J)Q9e}`p8XdjxH7i`iE6NTwTn+HxPN^2Ff=}Aj1SBK{%9^;eY7~l1^sV zWfh14b*Z3Y5{ulb&ZVe|`lQ^1$+^&ID=VdF1z2n7Jn@2INh9yaHHjn;p+tp$lB<1- zayYxVnecM>Eex{&&60;^i}5dGN>Bf0iSuoftTC{@&0q`Z^#BK|pSF)K40+l$ZsF%y zbStpYDyPvj$GJuB355pzzPHLmdzm;JUT{V5DxI)M4u>Ln=cDql4NEJwN*6%twTXN9 zXJl^m15r*GHIK4gL3{!g{yrt`VaqY!zxzlVIho+GhTemPOJ5};=3)26m{=K8l8+jR z0OhBAMj9{g3-p2yT$hwtSXr6CRtb5RAP>{#HRm;2`*&8>mcC0>{ng7cNLVP_bNt3GZJ9;1-`hj$0q=E;1^Y?f2 z61&_5J|&Mq5UBdexb@3gpy&)}H3oSE-e5aE))n-Q6zbro112&x4f)6SfyF4LyO`k< zVT+5|_ipZ-N)y9rOm437oeyPtg^Q*$q+%fpUc$qe0bgjS6PM79iyt8adbZU1a zoYK>h3A6e92Iu$7z$U+GPy|GSXV!A_S3Z=w!u(x6=d4XBJzEknW`|^}H{(@MOgCZR zpE0HUr1c9=7)aywe5t�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�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 Jq+t5=e*g%YM=AgS literal 0 HcmV?d00001 diff --git a/_images/table_python_benchmark.png b/_images/table_python_benchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb4aab4ac8d99423f5f3b95804e62a44cda1d5e GIT binary patch literal 50710 zcmb@u1yGw`w?5jILZL_r6ff>joFc)ByHh9>DPEwsOQ5*B6)(l1xCMd~2wsA_q_`8@ z<);08-?``e&)k{+oOAaKZ)P(|-o?At+WT40dN$!|DzezmNuNJ@^axvCPDVf%g)V<#urJUz|WCL?Pcs_XJ2m4^l7tJ~!j-eDXu3wc7tUVjmsl>JI?MpWBZnX0~& z&}>E@c-v6Gk1ihLAnZ@$+#bP9E3FcbT8<@2Ax znW#z7scJf7ij0cOdjM(9vi^#4^4CiGyOpL2ed?O6@lsBr5{@1AOpeC6`43dG@@F!{ z{!QO$aWOaY@K``F+ zWq&-AS5oRx|NRSZMYdrq3|{)Z8TrNTOpeP66v@#v5xde!X#%oRB-=cXrRaIuKx zCT00C1Rs4M3Bp1FZ2M495SYQ5J*OQz3L@GXh$1kDwCuyxInyMrh^@k>?xb2pcTT%S9K|}pMjAP&nr()YBa?~l>N~6 z2;<|LM`9BDqv|^I{dvgL>dWZ8uX3SxSNE&gD^IAQR$3_XRt`#EEjmiHDqimCKHAV5 ztMJhzyWYq%o0eJ+d7j}S1&kmgjL^x)7iM0bwyij0;)t#u{}e^HP>K3(ZHYv33z#uc zA)M0U!X5yfqb8G0nBG6$NNH!+6lZ4Vt>V)_&q~HoYlJx&y=NMVHQtjfxu_fdq+VO) zwTZeZ%7{3vU_~`oQVzz2R9r}Y>dkxIdA!u;gqkw9rgHq?4-E!dzx?&~Q@_z5&BR#r zh}QR$s0dl>R(JF?`!hJ(d%VqH*4D9J$>HWTvx$C@RghfqY4u=Fqpp;e?^5mO0SQko z|Am;7>7OeBBR5%wYj@K$=tE{e%sg#?Jnfh8E1F+L^pL%t3ugA>i@mZKfl@xiqZx_g zw7LnVu3WaB2$~N|lVA$Kx+Ew&0vAYz|XN9Y7WwE~`;uR8vvahSX8>Ia~%5w9yp(!=} z1;5L@5y`%R&UwF#_0P@s=QyiN28;W`Hu)hIFJED}3A@-!?jcC^$OnK|YHFIh^oAG2 z*Rf7vu);V4?IM_2d>gO-PqSCspuGrqyb5B0<65w5rx&X{MgZ^C5xrA6br5iwvI6&G zs&ND++m<;X`xcS|E<&c9Rj&K9qK0g79~LvjZ?d$ZZ(FuvjkRGVS)lzz5I)mhao*># z>wEN-!690Ujl3t^wSZ0EyNt{t%^kjw?GL(i7Mb2An5ezqsvKE5!l$g-R3`y4czly# zqU=<;UAr+eX}io)d+t4Pvt#XhjC&RU=DXMHmSs2lw;?g%V;cIQx=qA*gWWyN&RpTo zoq-gK@o`1b4wJGhyT;hS@ruQ)ugNw%=@WwG1&)xVYc8}Xy)P0ulJ z#?T+ED*pwm5_XASK+HI>oetCxb@z?f(qgpX0Ja~q0x>VrHW39?Z6N%^b0>^CQC%fzK zRi!C2CN3guK5J~N5fT01=02+<+Vr%mY&L6mb+T`sE{Sd#VQNoamjV55t1J=Kw2jb} ztj@TN;b`#RE1H)(+cft&>>X_j_UV2T**PqGcC@&^@j(DlYHW*b9RR+biz%LCv z9iRB8-DY#QQ>O2(VQK7~7Vyb9BMvbQb~;3k)*HxpFw8E5%RbyqEf@-!e;b|R-O1lL z*E~yAvcI&TL+p7Rr|fT@63kzffcb>);*RV8S*-Gd4|0 zv)?p9-X%>%GAWoB11&;~e+sZ>oxa;XR3;m9v{tgx)J&gjL(hHD{S9C`qD33OvzUsh zkp&cp&b{mx!aIf?%b=-qJ!#q1pUeiBmh#*xmelDe7Ede~LBevIvSp7mi%t&f0#^3( zTkRT_9&fSk?dY1!WX5yq_irycciXeEWnrKkk#)DZPb?DE3x8)(Dy5EBF_b11tv~Jh z3Y!*^+-Q_u+my_PNoF7#?j|r(W-K(?;|6&KUsv(m#R0o8na*yqM#89b^d30K3GFG^E9eRgiDhqNE)P=T+o+5)m1r8-uhd-ADHU};>COLGcslk0 z#&aG@%yMpF49ps)kFQL9b|;#ez3iS-FqkqBs9|WL==m~5OZPb2VN}+q$y0n`MvFAK zocmZO!0q0;(V{tHS&f5og_}HvyMEPh(R34YdjdY?XRoz;RvkSt?ndr2ThdrY*36!6 zn{-v0G`z+ZE|$DGO(z16qOL5;K~TDHXJ}Sv>A!Oo8o4IFt7ASxOt|)Cs~b1&?H&Ul z6$qV!`He99U;1%Q)M%A@Dke&nYKI$HhOXfTu!*xJS0~UMsO*GJZ5TKS!@M>CzFxZi zMnMT&P|5gyTr&{Lyf)>eLTlm{Gtstk$GJ0+y%KO85-qHCBWK!zw=Fho__e$Rspcw2TGioBk9_m__n0}2@cxxwUm#SF# zXaTZMZ;PIv1=iac@0CXs_2D?Ar;irT84q;hJ-&(m!0< zPHN!Tow0N_zjVC4Mh#)V2wG$|1>R}hwft8dqtD*a{1J3N+~X;YB!)HO-7O+rY-Hl_5Kv43t~#8C&t}T~fX8W@;{RYGXJ+3)I^U0uk>*x7BHq4kOe`keITFw%yRwdhof z=1Ka919P~+&h(OW{4~a#QP$js0eRcBZD92F2Jb~pC9vM6g;FAGZgND7?iyq{UBloK z&8m28lmSGp&0}^9I)1KFjXra-S!=%Dns9Nlk!-iTcArv*izwnBgjRb-%jJ|xYnED9 zM{AR9op5`R;?=SOKmE210<-HM@VTVna}XPO1HL+%c*I@rV)3`@+h`@ZqJ``j zQ36>fE*sX(p~dg&g;~Dtp&r&dT8f+WqwK2fTC|?Jbdy@Yt}EbKoiic^Aqp9Fnlohl zp5v7zv}5dTnK1RAJWj1dy`N@o3}V_H>)+f@^1P#G!bj}hrXA#%E$e*jv*zr{N7-`DVf^*;>R0nTC-Op;Xi-Io5gk!-8n?Tu zi>K97_Xe@5)lug@o;{$X_7~m^eb9yF;de zyM31yrTE45#m?8+Y018Gftb?9YJEvZ=4k!hxlb2uP2aWkKlm}a>^wSs4vDr5D$soP z>FXA=2TaS)lGGTIC>%o1ewsA};`dmr{>3t|i@KJA7sj%jZ?)0!H_If2J%uLsWlk5Z z%B-)wtqZ~wl*h_aSiNNr3QzG(mm?mpMkEz998Ky?&E*PpdbbUdaLw*k z%B%5r`2nE=C2O`5yIlz!-;7Muy!oHzy* z@GSAB+l4~h|9SkU>Zt;*S=2HzbA-eJ3EElXb+QKBYc=pzm3=Y$v((CS^`i5L3*+gM zthtD;e7L(Ct4&0OW5M{LPm8kd=V`_rem2PZ_|jF6XYbSRI_DwGty-T+J9J!zizM?U z@2X_=w~*0c;58jcK2UeMIagqVxGulqH|P$wb8Y$f;^lUY`3oiw3kvM#$ZA&(lbl5| zSo;H+CLw`!k_2hc6wcew7zJ`~-a1!>hHq1MO*U;ot>>bA-@ zASI$GLG<+=a}WsXh`4mJdXr+^H%v@yqfv7sx7$Y6az1l$FuOIhUCcLTo@7-7Uu?)L za1feI-iUt`O*>W>h3>NN;l}LOCDZ%PS>Tj+bn4c`{c^RBy)l+UNHqFsgmRXIr9pA+ z#vIAe!pS_2rpLZHAc125uP0BB(0G{P(8t}=QK^zu2bl`3<5liH%yYs;iuVV@4kPAv zs-WK;f7Y<#6Ij7G#BwTFukir;hSPE28=IXKC0VOW83hrjf!Vd0)Gk0|Y`dufw!q(V zW3dHxxp1yR{f$9Kx#yW!=x#7puX2!x-1F{FwA-&r5x{z#mfb3xa+Q5OI0fEaTdj>Q zJ~AC>uMZZDIwWjs!^U7sJ~KvoZi7XjH8P0G=h>XM#)$2a8J_R$K0qm#yOG;HzCoJn z=YH*H-(o6Lt{d83!&E{=cN_WE$78xsA~2&#!tFe5u9p5%Lsq#Tdf!(zrNVrtmSz-K z#>_2wx<$r~g7d!}(GSw+*0l5(mNjjZ z!5>3g9r+-0wnD`#ma3Agq?&lsETX5s!VYW5PC$jOaBM^GOz-tHeisT{r8m+e{8rQD zdFvm`?l;$UZDn>d-+Vm=HP$)O8gszaGNk2a?6uN`@c9-8;Bljl@8CbxJGGk&Q}E?Q zo%uhNueuaY+}W<$G=>GOQPx+#SGVWZh2-&Bp5(8l%;ivh`JEi#JRo2GB|n`|XtoBB z0m@18WMi5+gBnL$cse|7p^I>HOLbB6R`n3_xeIB};oW0wn-f8Xfheh?_;H=Sj;qb5 zwr~7wNzEOw@%`f=&JlC9>>PdPT@S8rdza7oqovNr3n#YC*LF&V0S1iP_9gb8eRIfD zvrns~t7A;wS2pMCWGztMO_l&(A1tw?EPbp~_BqX{yspsn?uKwq0MBM3Fauz;raZby zIY1*rO|s(BORHL`Z8<2a{A2H_G(f^Ji&g%hvGzKLs==)NyqNIolGS(MeAU{58(tus z_d@3y)6WkX3>;@!UN4?G(?(b2>mHVhc9g-dl{Zm!POB!=OOG>AA~BC~ysr|HYI_n2 zm)|1ma*bXRfLe0$E>v!DifC7Bf7Nb}wl>LTR$$cXvUS)2VZ)zboLiGnRpcjlQG!o7 zcFiQrWii2ilx-O`)MHEExLhO?pE)2TOyC-m;9OZUPOq&8Bt`Oa!rlZ?@&%+$ezeOs z5KyqeGO2zCO!IAM2(j-udzT$pOTQZ+Rymz9H5^w-LUjN;3qY@|2vt-$TJVpBFbbTS5U{T*sJm*F?T zt1RNRdR_lPR+x8UwA{`UkDrg;*apDc90GUZ!*ce6JJ=paeOL6^FPAk98|Le@5DL$E z0I`jV!sjbSja{JqZWmx$?YSyj=T?Kv4ERReAv9S;+JIcygGnH3{kPVyacu!lSA-Cx zo_WWqh!?N1sG@3*c5Y`s!dmlS>%!J@FU=qtt|+*~J`)hXyNRxOQ>N%O-QT+1s8XL4 zzZzYHY5YOB_93O^3?Z~m@{awCCw*I^=zw)8SbTQ^kv{%?65Bbc0cMwjSQv#*!M4Hm z!7#UJks`^-5`v6ffU86_V|jVoPT0~_9URzyrNC8}F_2rTnw5uZaBX)J8nGk$<~pJj zM_%7rzVxFRo4Y&xx+v^6FyA zp2_bj6a>KU&l|lLB8fQGO7nv$>Z``P@7x&;H|utJ7Gt7P07ZsYpCd61Qsa2H(u{61 zWA1`%`<5y5eWFuD2lhA*dm5#*jYi)<L5${kDY(iOb}fv&?D#`&>pa&mt@ab_`WNF=id4LkX3#XrSv~s#V?(%;OWmwG|rRtD5;Gez& z(i9T(KXftD%s-d^{Uj_f5;Fy3d~ez9thF~e^-a=rBooWUx96JP_)ed%wlUhSHYjS^ zA(8gkHexH3hIdhnLPpCca5!`m&gI{S`!TKZWG_@~^?=fj=49x_T<9Om3~^qweL6Hn#w+I~M!U}% zH(BJN#y8S&-aq`jUkbBO-5Jk#HpWZnBCUDld34CIbiYQkba`oTYaN(n13y~LIU0qx zv2Hs9ijLin?uO@b;!rxdD?QJiy6a@soXH$8w22;|F#4_+pzg`3?v~uo7e4GV_}9mD55v9Jko zyj@2e0Bz6&N~}P2d}$=+==_^~<~=h22Jtb)-GzE?r<|kzEBAY^7wt9CQIQ_Ih9tv= zR(>llpqE#|s;i+`fE3RmXCDv(rRXz=J9b!P5yuI-5Tj7}uDP7YbD#QdAo$xVe-?h8 ziZ?#D!dKP1A&UX|NFJ+w>K|LY8A&#oA)=gkiGica`i~UkN^Az?sps9jYzqLHu)GpB z1RcBFG8+svPJh~ug5V`lpX27Fq?uDpdH|>jEau$S)RRP z?mN1zXYvlK)`OZt5twh!w9R7SY6P8&e6<`*>~W^imJGAmLh=ct8>VDFjK5i|_K;@g~G#G*FSho{fjq&@4RV}n~Gd2fd zHX}m9C^L=O2Mg4uCQb>W6}eInwM7@YN>AMR%RMh}H;GOplTj=+ke~+~#N4psiEM41 zD&ejc<-xM?j$hZuN?9mkVpBNgp4J8ZGCzYorLjljXUCqD*!R&^rpgd=(x=c+&YbIvau?_8Uqol9+*oun z&+?4(8PyN7UsltGoY&!D_TXl-7MClL3bRq!6~m?C=0|;>mjz9jy$UW=R@2*JU}tih zyhfpxbzopOvYdW(1f>3MaMfU10$5P|?X7sRVm*l_v;nU8ANGexName9m zxD7lV%y(V~YchKa3Q@NOUQKK!k#6IMMX(jM_N&FcCyxpN<4S#Aa@Gq1?^y%Zd-oN! zJVyo1JHMtro%&kF^|bPgv&TCO^T0V!kzhZsWSCR#+i$m*3zj7EFZVyDGgWS=*SX`? ztF^5B%KzjwHI7$vY}+)IhUw2)6Z?vzn*tCJH~ocZ*Z_0V6zmIA7lI$II=76};*-+; zI=QTihAGI2RsFK@O{iJ-JuyP8h(JC&mc+LgKNPr}S%-Zf$y+9Z?@TX+l zF6MOOUh{~KksUa)2?*l8K1t6x8cKb@XP9W*M99l~2SBdZl8t;i3S{oZf$wz;0^efs zyGu4W>w>ay#gMt?y)Z7^vW+k2;MR}(C)$yCF+1%s{`5fAR3dQ>$C=7}#fk($lRHpf z$i*?&a~LB6bFF@5SsB7(3xV)kfv;o4R%!V`qW9>OO-LKGF$9^AHuNk#xA*ZODe=B` zLAU$3%aPyCkj2u=mh@%PV-;~z_dHDXqv#pGbyEZ@Q?aQyzlb--!Y93-s%URboH=pW z+0kQb(97VY$dy?pJ%zv}zYP2+iSSj2$*|$GgxptvpIOY*E(AoRE4|tHtZRC%wR0_- zPr6Z$fhXgXTnJLqidCR5AA_V0><0~u59(Ls6TS57%3W|Ael?Vhy70(3E-K1w*Ic3)>h6F=5K4Q_a zGokpZL_SW%yxUhEk<|aW+ERVj&IFPfw-#wqk>6-*_bn|LWcET(XC?-&d;^}dhbQL$;CaxbN&w(L4vrNwW@qVeDh zIrZxL1$U;~XyWAF@B9|~{S}YIc}Q~qpt{tiQ!$gY6Hj2AnOqmnFmb>&$vQnoA{ocd zED^VICkl1j8b{6!_LBnVyZK7+)Qo+LS6I|ie~!>hV(w4wN-jtDcd2YJ^kX83$ya%! z0XJdxm`j2U%^XduUwU5$o^aIj3%;aFk^QAj+R^oDkik#d|uXHtWsCSdMBNDC$-{?+}NVKPX$?I=-8vE+w{b*WU!XYK$*DW z|CUqW!kv&`^t~Zl+KVf20c{fp@Gr1KT`5Eh_#-Iz2mLtt{9np0{=eV$N03qLcRqY* zbW8Mr`kzV*a-`JasFxBcwfIHhxJ>zQM7h27pW__-aGGJ#x6{Tmgrmfn)$w0z2f9h-am=o#I$>XO_9!uHVaOK;h-Q599Q{oJwXkQy+KmFc! z!v#iGol96$9)ht0GNj@JQ|?a1JA-*pFZ}~5s^mECOyQ3{@4pm)F#d7b8Xb2WSj{l= z?H_?adCH^;jyhM%c?2e5gfp5(#`Q2j<3l(W9ZnLVA--dW43;rG0+Zo+Ez4)XS`y&F zwug|Yr|_1V9Z8=6^BqaHz9?p4gULJuBSySa>(}j=f%FG`Bx^I)KT*`6WCEX*wij6 zO<1JIk_5p`oISAKcta&x5u%Qn3~?x-Vm9`PzT||biuJg}y4&-kCc1=F3C<{7JR5K9 zjyW&V>VB#K9t=-6iOz(#*6e0tMY9fjj955XP}CcPW6-GJRci|?3j%w1U2S%f|J4?m zQc}tax@rg@$G!87FEHX%raeQ)1&>HcOB)Y8XL2}82QhQgIw^!9MR&l>iuzJ}?S?(d z^q1V^c*XQt%*1m!IZ=n>;5AAi)u6c9&(KPzXcEo?cYz9u3$l`CqmRJYxp6%1RC*4D zTiGQo#n*H>^>b_WG-EvCLKOHc<(6HXYw$F-rXwpr$u@ex@rSct)$;u93~D2lpD9J7 z?>;v@q_VUZ#9tPywPIqdHIVrq-W!5Kuc!hq*YguM>DXze2PtxUBs`fz`aa{$PSP9? zvKU2osKHASRR28iICbvdAu%R<+pe4CFz|@=NRy0fXc}gP{}z|R;w)-M!A3Aqf#)Xq zvb%|#EtrFu+NxbBjikfmnsr#;@YbNmp#6$w}AXqQ;(rh_Yo z@VqsWCU=eO?W2PSGV4B7RsiExlj@SIVlZo%i;<$zTsUTmParfJAbuWyu7Sj6@!q>3 zyGXIffiF5c1Qog{u;bdwm}SW>0H3jL;fJOb){QUYWMa}fF&n`vJ3u`%-#1CTRB@9T z=-IBp+poU%PX{NfJV}VW$tXPBwv07k<_kwDxWZ`C8FQ$8gN=fo6-(s?p)grnQb&-N z6_wX#2T>pCI^Da>z^J5cel>p**(ymy` zpjhEke#hhT=pS`=Goa5*nS5 zW2Ew$S|L!kg>PK?=Y( zySMz=_DkW7cdg%Rm%;6v6Mk@uslZ6@N)hw+?#gL?aNfMXv-}#eIG!@-0q|Utwl1-< zPhiiBwA&Lm#*FF{1bY5zns&7hi3hKSK&HoST zkMgKi(ItV5w|0s*?wm98WFT*BAxo$`0zt5!&80?6LFe68mIWR;Ap=G{y6FJfbybx| z5{h)A2IJ`;_m$qUz)-m?#B4fE-y$6lZ5)X?bR?$b*pVQ-Jo~LW3;g@F&1?~PWcZ?l zL}FLaY-2SnlYDw*aY=yo--*Tf6-wt{2*vXRac%!_WR5n z;7=F9202H7dcGJJs}5ekrW_nDbPiRz5I1BC>zMv2Z!Y*u9PG|a4Gsv1Cfw@{>>j%h zwP(+@r-^^6ULUe}j1kW2ohDnkD8tfG>GS0@Pl_(*L53=;jgu|QfXrz`=~jJFKtu!%{KRchXBmYxM5nn{YC z3rCra|Al{|!XBqehgH`l z$XYXm{We4Aa=l&A$Lbhg4Qmi=0|=qg!D6WoEuMzI$U`3#sc1E`H3zs?vK7XsN78y0 z1&o=@WLt>wk;pjhQ$ME+*^zxpS|o`+MDTG=mb7{NC@T*I-+iGmgNdUTplz(NoS{ku z%#e^Eb9ijJ;2E;uIl>uK3F*ltzAa;xS~pmpHM{%N8wQN1p&+S80R@80*0#B#=6lIX z*Pj8Pse|6D;N-&1Qq#9xeG}dIAZP&@zq2|cIZGZ8r^4m*Uwk-iwrvp{#%`V>xl?vF@N<;sQT5&!xt|%tIfxT|tiw z^{}f=X5esD6Ux)9F7&bs61*2MtACSvE0kz>|1YkU_%BTJzf<=9&D{S(8Z5)k{=N{S zwp$mLEOKACt*>5pkL*s0{cU&BL}b*19va9~bftAg>|3AIMjA1mJ0s!`YeL2p(9+0A z%%*MT5;Hw~y#nmpnnL#w2P+wybFsJ*DvySJFL@5`ml?R>x8FcWt8;EwaoX<3S-86^ z4_nV^)&#gr9RD`iI_uG&_&<7*D8GgTtIRg=((vjmNhgilbv+Mi1mMX8;#kgr6PL47 zu6zgX0!2zApLU^BpOjzEOPRNRIZYDwW(n<3w%in|sm05F`@A5=H*03NRaP8{22nh4g|fhQcl3jbcq<{Gz@@?QwexH9z}2=X=mOkajCbEN}eu!4WbR} zqYoce6uebm;ou{X+0w`5%0gpN`EbY5xYo#$&Da~KS4QQ>7JZtKKh8lbw=i4#8#Ouk z>GxEv%i}&6W1N1;&x8k-#`Rgtcf?Q7+wwZ84y;EB6MzK;CoOa)3BFfn!rZB*ax=ru zGe$FEga0N*NzAw3m-VPYc;u7sFa!lYY|Hp+*tHdNWPVH%KWw6X?SQ06Ffb8p6j>%|w z8`@wD+L!>y=kG&uU^ezJK-SzL@$NC?8$jAl)*F42jJm0EcFTT~-^J0mF=%4#X~GNA z>PCR~YX-L(diN6P*6s-gAz_};IFV3wcTSv7(OH(z> z?`qee#qz~SOQa`7^*Sx`F)-kj-RHWV^c>e0^Ico_l_Zis;cD#-;K}RQ*Z8n2Py9I6 z*jiIUBb%VL9O1Pfum9=I?HR;^RFVCf0Q>rES8BI)y&K~xER6ccgBx?WG2rX3Z#3?O zYmhwt0Zs$c+1J!Iu}~p6phe>_GhbcWxM{*Ut`_ul5~9aH^?9{uwJFO; zHaH2pe+Ju~J&yy|2{+&0fxp{%QGTI)wP@30dCJ)}@HZ%*g%=&kHQN@RxmZk>s~b>> zu1pSloafyjdiIKtJSm9q7G=JrOU7hE7OY6SH+sfBHXa>s+xvSGt%NwyG1mWmTWO2~ z7L6}k!`+H{5#99F-RxJCp(o=Km% zVVSbPo*>1|J#l)>)7>a>p89Z`xp~34bwSN8 z&}-gs&`-UU_WbPd4A6i-I9|#5&}gmv`{r^>=y$jKK}8ReoPL9nFnWY6>%#gDU1|`u zfyy{x5R`U3=ber6x19%mSy;Y3{6_bxup@^nZx5P>#mU_~E8I(r{iU893_+7FyCT)=`p6@b3VzGmM`k9L9|x5R8$A}|+6u8L!;vffiH)d`I^ zK)mrOx5uf$;b}RCQFA0?0-^~Cd)Y5LaQFn#ts|P|n=~>4?7XIOo6k0?i@2IEdwNsj zn~PLKzls0mXyIv?7#l{?&h`;y&}YI|Laj*(3-d+`6Gf5^=ZTfbC7lkrq+@E@FMT2| z-~GK<0Korx_&Qvz&WJFVQ+;tXTIH{6zg_so!J0FM=1AsYpFC@gAUAVlJNs5`I-z;v zHR!bA-|2fmWtSg00BW`DbZvznmTV9PqZU_hG55O`WaLJ8l+Rh&i&X-s{dy6+DbfNS zV`b9%Ol%&|z?4nFK`S6zBxjsHBJYi6V>yysB-q*>zTO&iJIRRdVXxC!PsObVkKnAh2$}$;dxEm4^u~Ys@r)vyA zv;ca=dw!F_@97dXo!>iCLE~+B*U%W};NU2Z+eJ-`PQ5DP?%Ei%MuMU~4^~6-8w_i` zR-vVrmJ8>?SB5VyP)fJSN6#qUa0(6b(q!l9{kXySKsVC}rZOH>^eWLMSxWj*?lHEj zPMCXbKd}*&eF;Ai#>mhj&MkbSNvLpw&sivf*kb+6n4EL8o-WGL??y>=LIetrqChZM zl=rHz2hTJy+-zz~Z8CF>q{sYDz?qqK{8=8U`s5FT{s#RIfj&ZYh>`H3fX)55l=$(I zDP!`M!ygvC{SZa;?uUA8%TYgkW{?)yh{$j^lY4!GZD}P1Vu28O)BeN}xD3sCDxz5^RLgKyoi>&suQY|_d#W~Y5l zj!z>^_3k#Sd>7ZwGW=Bs4eWmyYW0#Ljft%&9{hXn4mSg_R+Q5i3cJwzpbKS}iZ?9# zR+B7i&9WzGQXP~8kWmVSFECRJ5lPMwzDxpti%C?Xfv5*FFSEby!EIk;Fx>U%;tJ{0 zC$$t4HDq)$(wD+}GA(Nr9AX9{!!BlPl^l%@uP`T=9qPHSD7YE?Q?udr>3mC`l*z2$dlNbxWY1*heX-p;5wuTaukj15I_E5V zs@M1nXV3btDO%6rpjgoQp_NzTGexrD{fZBe>q-NVEphO6fw|b=X`6eTYYC7-NT!wi z90YZ$+>EbinE}OE4&3F7go!zH2X{|NYash6jd}D}rM=uu_+6^a2lMNCoJPhw^Z*(C z=rr6F`w1&RGvzxmP{`$@22a^=j=!Y2;p=U)46XV8!zwy4^LX||2w%<)%URaUXv|p!4+Kx{-uEN=H|Ty=K2Rzt^EufqQM{ETMVTfTc2p& zL?~l|!ABOc9 z*;M+E>L{%8vX|WFuIQavgwe7$vVuT-6s7NdWfYFN5y(qZBq{eA5)g1$7q$0UA8Yq1 z!xQGDx{GDw+y>nwcT)6M{Wo6fGG1eET?!(O>oG7iUwTq*W7ba+_dGF``*9@^LLJ%{ z8Oncj&Pa6B(~DTqA=}fxiJ^RmioHKKkk5$}NN$fr_)Xmhy~0Im5y}|Bke#G*ekcB; zvx;-Zw&j~4RHfq6zom?_aq=bphNc)5nnn4OJ#a{&#CzZPRh)@vNRVOd^B#HuS*=u@7Ee?G%M31 z-QrpqWm#D#cJ$2T)+f8@NHPR{uw_HAt?j~Jvq3bicQaFXODGBbJjJ$3{gUB6_-caj zb0PGa;N(I{&l}w&aLzZ;DcZCEW%Y&QvO1x${6u)LhGmy0D@clm=+!L^`z8IWNwVCA zl_!FakzFw*7#Fty&4Fs$75vj}9CatR(WdT|y~6+>y1>|$Vm2sPFybQ=f$V2JD?=wX zxo6=ro_xwzH-n3gGJj3MjVt<>$1kQwN7EpiD`PXyN9w3(kq~n&?NN6ye)xYAJw%Vj zUBs7;Tv7)j@6pTSz1k|~kU#3~Vfh)PvYc`Gazpc>`lCQVX9)%yZy&rd#zdz*(fy?Ofu}uIkhGngppmC$xXz>>pa0X)oX#xEV22F6?HIzUT-K?Kn{Hl@Rho z;}+ZcbXtQ zzn2LG#3rdum#cR#O*D&nqY%gwC~u8(XGx73a{CKO7sdurd6r&|ouG zq`n_S$8&!VzJva)78;fZ)P;bQz zyrD^1lk5gXogVtDq>$lYN1g^YiNw4i$!b*7LpL#5f<$#nIKtjmwbgYtG2({heUmjT zZKOdrWd3$Ob_F3rYOogZG!pUUL=V5NL!{}j+;hZIDJaU0dWt|VwtbItw@{+a`lZ?7XW4q9mri*^WKqz8#4*mkw!b)Q! zpP^Wh7(cmI&Tt!^@Lf#pjq6(LcAl0vBd*Bo*`)OKi6QcGlQ0ePq{wMtO%FPKjLcm| z<_`z_)7Veg-yCCC`u5aPF8c9XB;T%J!e(eh1FlZry#1UJ{7qIL*S+=Tvs;ZA(v`(| zgu_gZ)B*Z0*83LRkiblqyP?S_HiVz#$9WVAR~2LTTX^r5WUYE-*NjD>e>(PZNcWr^ zHC>3;+fGhC5^ffo)y{&>2_IF=8(gAml?*qDC*8rLNB<-FMxwK@ z{(W{*9V57GT6Uc3@EM1j_EC20MYr(5ec(h$#tDoeW8qoYCHltrbkO{@8G8M20HoTK z%Gd_SOyKgZ{z&Z;I!F8qNWo|9tF$B$=Wlf*;!z_#R$C$Nz5#QbPWlH3mtW@I>Cs-j zU+fs!1ulX~HLuw4lcS$FMLK$0iGLj9na`cC$GOzdk3&@LC@QAsOuNsi=^qlku%FAa znqO>{@0xVKC82EEJ~@)T>|1n*tySm~H%^=8l_7#(UUF+(oNnXtqWg3uwvQ`nL0j*- zm0Nd3Et7HmI()84s}gO{pN}6Sl!uovl^bYDo*IQ=dg#5?kKP$x6XL-4NSD1;7$r>k zCFI!uEUR#-@qiIm(rIYo=DAe-t}}^MtvX^aZNyPGC|+u`l$w8$=1DP#V9&t~QuuK2 z7QPa|>^QSCebA;YW;>#)Z*#|uIVlT#qX$JLC=7Wta@*229pYpp5%=H?rvt#zz=d$J5Cu0)SFS}8~>FUV6`M18-ElRBi@-7Sc_Ws;eAv0__H zXv9$8A;n5c*wK7Zb%qhR_d!3-gV_k1#(`nB?z2?4fs3wKyLoNjPBd6H-wI^tXC;aJ zw*p~D&4sZFHH**sZl#TA+J1NEq@H@-#CVrosu@wQQC0n#E?MlBR-FZ&A*POk(EMXB zALsZ^$>s2iUXgjv2~yt&Tun?bLY(tuJLtCyz<&umyDXM&l=YzVX(j^&htMPy&IJQgP> zNt1Gu>_npFDq_jo1~2bMo2^$V7tOCWHW)!L2K5@DSoB6Olx>8SE(oGvt z`>79>xDd{YoT6}Y5`z2DUf`r36HQglQZELeRgf7>IboeVqNacw_0hf(23+Ab#HI<;iJsuG+ zlI-?u4f_s0R(V0+&ut6n6qe}d*FfM;Un|(?-0bb_X8)SspY!*$5`_ zo)09Sz6sj`04oC{l#-X&d06mQe+X)nMPOd0%@|ivW=Mb2}#$tVjfGevJF_GpijM+1;IJE# z)QkccX1>^+LeFN1l(* z8upV9cazWPWE6?m^XJhO!?5yO-JIsx5C!>c2a`wzcr+5+pWbK4*iRt1!6!=nf7ht!XLsRY1!UuwMDK~H8a54id zs29a78ib_%lDlnjYT4XnlB5g75m&b;OAVlD38q`W2DT05gWhwUy6 z5x>o*(Yafn!tu`Xo3Y9kE;>;1Mm{dN2Tt(CvQgx0XDqC{T5-UvuvJ|Y#2r1W3DdaO z=SgzxD}U34m`NscqD53tfIF^W^%OYc>M@pqdY*l8IF|i7bezIDV5mUl%(PSlHU^}x zs4dUC8(sYH62ftVB0jz1#gwW{vP1`D$_r)GY6VCI{+@3fvinJ99NB)MdwY2fnEsq) zO?CFT^_l!kg6vWPSeuQq{k`bhqp)5=2$P}hJ#o7#8ubjqRoG`j;ZlyteMNOV199{b zt)}?wq;$3&6go5pS+1|sadh+&1 z7z$39p&U)?maClP9vWGC^g3`7Bea~Lx4E9zjifQ|QFByruVSELNE?0271N@}G0O#y z`gDfmD6lSGT-8^vU8cA~(qzD)8Q|`N1j0Hr(Os9mWF2Bk&Kta1Lh>lWCYT@5pXDmc ziCC-+2)|S}z*RHJ`nF=T9Pf~7g9apL=~*+heVJ)aNoau?Q141j=pNICP&9<)Ol#ny zY%6r5NK|v4V$TP=5znfpH?TqIX&a={{VL2b z_e(hX+bx^WaCo-xeak{&W6^9t9x!;NKmgGRdsEHljl=Tbw1G(yO<3B-=0csIG}P-~D>90XnDfr%ONPE10L-hn4h(JKnZ| z0j?w&;7Y0nGJo?!l++GQnI&w6N8t8V`tps3`zH9% zv~!U)rz%1Ere%IKC$@lS?R4{plAb}s(o*_`Y&QDgGR0f{1iyn_LkHQ_ivcs#%;6m` z#5siJc+Wb9twKw(op8?5f~oRY^AZ|^^#x0VfPl;qwc|DD$p=@EgC9r(+H?Lc{-&8(+$86!xc@^C zJ}9U5`(;~-d&6(nwpvv$ygo={uaWZ5`BVQm>e1B$8C*%y+jPClCAj8h=d&NvwR4f>-n9?hO)l`F@WpKlUc8pSSL}OjQPltk&cK#Ea{f zElcCVnGa6tYvr3K$0eh{wX7*?OU@>L49Na@M3|VzYqP-57@JZG_yM7~sBuip)N%?2r&d94TZfksST9oX;P`y;_^DALmVUa$BzA(WVGl5JdlwIsK3@Bo zwS>&Xa}!Tq{c3pCs>RK@*n_)fj1Rue7;fvl*O&1H`@AL|DDS;%ZiCzo#gyUL+_G2G zoJ6cJAQ<|foYUvT;^;vOV+r1_RDb_^SoSd$9RD}N}$T&JV z%jk#Q@n)FV>nQm9ZcgAzKx8KHcsGWeOLlKa3%6SWUoxH=;@+k89VU*|EUKhkD>oz7)*)dcr*vmVg zWW65$0HMd50SDztEoxkX7=iyb5dmc5xP^wfCH^Pch>-A8{=IB2$3F0CXjHsS`k+-cq!ODO%bH&62 zl1($ozzJiJUm9Mf=XQ|yegPq->R?b%n1CcaE`YDZ!k2$>%cZRxW+LSHTwiQO)Vsf? zl3fNc{Kx>q&lvBq#E$FB1|}*GiAc1^CHD=#^HjH;@nOL8jQeo?V0N3D61X-iX#uZD z$PRqBF>{eX18K|SAU=AyFV{SM=M*^HQahncr?HrZw0TcDc*M3$q?fI6@k|)7M*W!I z{J2P(Jg)!NF=y2+X*x-ynQHYKpP zsT{M{>hN-Z!S&`dFQ=>`?|nVZjzDEGm@yZelInm?!5kzDx%i?2uuE~nOb;IxHs@>ywYl9g>PJ4wfE)RA+sJ_Z$gnzYWnT}^xf zd&x=!hdqAW+X>OFCSU7j9ptmyB}-O9%XKogx|MhNixkpl@ppPT+0Ex|l;WwMi{FU+ z^v#XEaBAba6umD2+?H~H%fjZxezjS13g()@CgerU=b55-(gSN2_G#J-Db4vYTqSq! zxFJZajmlbaz{?<9ywwt>&(#XXw|MwuiXuW3iATE#UA#xX>7cU*^ z9B_Q-J^T=wdU@`1!@A)Sg>=aDrASz6$E_g?L$X(TV%eO&#Sjw68AVIe1Fd~uTrXx% z*;aT1l&_>(dPr}Qt3b`X)&gPc-jL#-$@uzAfP~NV8#YNUN8fCKNR z*YOXIOKB=tRa(B)fivdhb5GgNiax9t1X3yK1s91$MkdR`eGeKllaO?!@#h7Q`Je0kTYhSN7*q|olCfM!HfVw%I=m^O(6wMLwUiXyH6zyh|>ktIzXI0*Z1kq zK8#Nnrtk}jT|_(QD+?mUP4U23j%U8ShuvoT(gXu5keRnJxU$Xt6S8~>=VFpe_#ohVl1tsNZ~bBp>~-pfl5S=!v_W4g_*5 zpfco|Iy2))jIYCwiNynf2uo+$Df>sTs_wy!+pM^_K)VodVcO5V88g)73^+--(d)7q z;5zG}Q`B^4)=UXJ5(20^5`*d9CpAIk__iN@B!=d~#g_?o0SIMOX|88=-s0~CN8mQhg?yZW6ko%DoP}S_ zWIVI#HAt*#;!AT*UT(yqOL_rA58dCmml+Hx^Q|wviz@-XM|;E0tzi8{o7o+0Q_Y5g#9kvLTJX-3!-s*7gX# zi=uGdp`X^Wn=moz8}kcIHT|$5ADyInCVJL>tSoC`>2ab=UUpxepl^+seS4O%RD!88 zQ^Izgnfuw|prVi=YvjQNDGpyWI5xUCuvXt0na6z;aU%vLUt-e1)*Nae*#<`US#i71 zr?#~&$-@Xi_ZN{6PvXNe3%$wWp_;{Ox}FYYwp3Mh-y@&X&0(%HXCsYS-4yTVst|F^ zcm+9g-coiOJY0OUu$8mLc0Dm=2(^n2#JMP9+zI>er!u%&LljcpvoJ+ndbDse_4Mec zJRc&paH^>1v0v)-gseXMQ)aQAjS2cURDJU!R3PENNo%6yJ?hU+es1YcW@c{IHCn|e zr`(JltRGLhdtPCkE}sz?YG8N>MMNA=p=PJb9G=$k?qL(Wo)BMpv$`$SQwcbU$?|5? zU7GlgDyuZ1T?4(ru*c(0uW4)Dswg(Ge7GX?ZPI*orKK}7s@CSPCdau*1bHgCQLo)! z3C&Q1)Yg@Cn}iMqO_hk&g`*HCT$TZ&q~4-qXI)3%pRr)dR*&jy($S=AIWJ7V!#w5e zEA;yy)V^@G;|ef)`V4tbYO%qEtD#TlPVBENAtVAtOq2zME_CQ86RXQdH-UK&mzdXO zPjc>EEk&eoEiiA2Bt?1TGB z^sHY+zluZ6V3evRNy<&95%qJK#bhzlAG{xtN@DZUbGya>ZJ_|#+-!Zynx^cf> z@{{?GUo&gv=rYXvSOm*{_dYGx`_2E+w&0?)Uz9zcZSp_aw~!NtGObM1dz!miZymE~ zkGC#Uc;@Vbl&-~UF7b4vHjLfm7(-r!5KM~+Xp*MlkIjnik9*mW-D!v z()(w>UE(-&)MpQlTP9Ke1=|GB#jJ|`jkhtCoqB=1S7>XHXUA);0R z5OH^T**W-IwQv-Jqv;74NCE}yW7v4TmwO)Agyk)Ox*`MR7!c9@ekGU~59z)9q)whR zvF7UUL#N*iL7j}$R;v1ZM5NW=Z%htCpFXzijas}2?dw?oDsER6MI8Ll1OohZSqva# zr@uNTdLnHB)je~l31jx?eWHQt#Em^4T3zFHF|DWq%8?2oPUXGP}t#I+2A#dI1> z{9Xx(4#Fio2X5+r_O6{S!ee8^Y$;;IM&8xJWsyp zEnf(ip6vLaUr)L3Ivabdb6|klqd9l8q1bl~dAfbFz92_}&8(pyi~SwZ86(wW72z{bB0% zEEzY}i0|pr?o=_qKjKHaTn{O}e8nbd`5G?PFsg~?`P;-+WYX#eW_@M@;2M-bg|8@p z-!mf61?`EOcQjHLANO?!hJE{I_(QKU#}2J$AfK@<=i5I)K3ZgnsLr*f&2HM5 z1k1H$Igi5r=6i=?Dv?i;86P)=J!V+&Dk#T=WC|Ag15PQ!kq#q2@pL&rbEu%a8w&IN zo%(n*=O1_!PThG^TEN@Hk{fz^7852LT`|l0)xE~9tBrE{TLMC!Yb-yu#>)`)&$A;b z&rHbeBlxx%4n4J^PCQ?v(SIr3B#{;VX6UmSY6yZDW_R=i=U!~hWYs>Rh?qQuhtsidhbu|?0M3wfRp?X=!=ebnE4gxyEp7p z#_I(Vzvn{K{x-F>yFXQV9V>B92b#OMU-uKkPv@08n+5>GS~Ggad7^X#B#GN|mE*8E zXhhyO&M@fmPoa{JP=~m4lA%$aML{qZvThVuXcA45!#~|tpw+TZQ(0Yl)mI{sQdQbh zy={;?%ROR%`L(JGnnLGo%IkOS@4(+ijPd3pP<)E|ANK@z%U2pss#GA-T+3cFkU!nq zM0l1y;h_S)9>KVcKzSULnt4&@hCEQIMQl;8r28_p`^@3P(3$;{OV1Y!hZ48XqSoXe zuaixLR~F%sTm8QA3~;=51m!###(j5SJ|PRB9ik@ld`=@3N5tXUw7CcoqV#VZh;KLjOnna^fNDre@vJsyI`GXy0x2F=X&KnR7?ceIQwR11tZif2y2D6&1Bx>pMVYa*Ve`(S_V##@y zGuCmz#zpUZ|L4XP!}88f4tAGph~}s%li_}1!(>(|z&r9RZeje647Ecj zB=@VKL?!TGJv)zZ8zrPit-xAYH`t4s%3Aq0wzZ$gD(#}TI7j}NJJ(3+EECb`6w3`| zy#TTAsdo;BGrfqb`si&65c#_;k~wcF-~&F?a-mS@EB!4Ik&}qTZX5#JEGCY zkuu5Q+a!GVW1C)lc^jJUDeoIva@~zbaF$5Ebd=H^U+{_z9+%*16r&ZgMhOu&(~%U& z>A0znnja=crsyNS=6J(6v+gbp^JK*EHyOC5&G`{bDcxsIdWkR5HHSMY`bNzTx{({D zW$^_L(@3Mu+U;HQzJ8VkNy1lCDOY|7VNENlSGrqB)`tzK?d#bltL%S?|0(~9|G^Pk zP8E90tMCo*K3}m3?|jzhHv!7t1M#rpn(0LOLEp4Bro6$&(BFaIHSAuFiR1!K=wIy} zd&1g!f;|PjZp#Md(s3jFmfkF>c)AShq06Ki3K41oH;RX!{JU_J=+8LP8+t1C^Mh2c zv!DMEbT`fMV2G~64?R>?R{!w(U2q~La@3JTEJ+qr=MsaXlL#wWz1c8D%p#Ym{dySv zt)CEnIg0Yo1lOdopIfy26EkGLuJ^gRGw3N)Q&kt$Oc6DsdXPQA21D(FJ?MLS%$Ruw zI@NQ!K9EwD7wemqqMIqTh;V`Z1*N3aRm3v(xqkL%n3+mcCL~%zj>PU+RPN-@QGfhI zdp9C{q_&Kgr8Lw$2?`LCoE!@|9Z;odzP=9`k{53?L0xU1?6=B_q-@h)Cg~@0j9DeE ziFH+EeTJ2taH329ah@};TP#!E*w{AqfD*njLILS|HVHYjC(qmR#{%{^<1&mHqG4S7 z{kwC$NwqN3Fi$v`W8WcPX-8>@Y?rCXYDzP2kY|XqxvAfFj>Ig7!(KGBTcr}+_BG}U zf&DPROB&@rR5whpl%JnnsXWTNy&XCHxYxa8>AOWp=M_utIxLzgWTNz(=hP)O_j%vb ziVRMQwj}Anwu+u$jv!0Zu;M(csWwvVN~}S)U@feKKRD_}+j+u-RxnW;;?$H`FN* zLYsBZ+Wye1q$>XtQ9rtHGD;s<_S5WNYO4EBFItzjC&@*nB|U()0GYhE|BbmS7*wgY zy%e2l+kR7JjrY({Za=-Y7lipAjx*I-UH3f9-L)U`%_|>d)D50EBlvNf`FEJ@hp_?| zS1M%#xb0o%^MHUK7=ti@Ist94=7Jb*@k$jlD@l_uy* z!~D+<`uIHm6U|2fC8XB#sd0%z{|>H-yfJcGd#_GnS2s{jVrBdcUZ2SZL)>$svLi0_ z=i_Y_xMu<5psbxLCW?laV}5VkjyjT(KK;{khL}wW`}oJ!mv|>)9jT+fC$oyo-f6eX z|C$voE0Fn!+=h*l8Yuo!ABDaRjb2}gWc2xavQ?Sr@-_@*ri)O7Ou|<-xS{r;zwzdj z+}8pHh2U_yl{2e#{BA8Q9z8OryafpupwB2PUq1;z$XHW8lVJ^nTiTKbuV6pMQ6uC&TZMu!}(J-41*&+_rEGFq!L4JkhH-+~(I}^OozpEPJO4 zdrH#X|7ZaVL$khC8sc`#gO@fPM-UvMW)6Q*t*S0nC8W14{F)V&0w@ORIsQ+AKo-qI z3YDy3Rh`$j$H0LIM4PYj0tt14?2}%&g3!0D{A<{;W36Pkdkx$wu3{ zNC9h{uBWj2Cz?BE2e*DS9NH@pV>}YHbnFCPfQpT~^3z+9fEPD)p46t7x8%oU2S5)) zI|dpHz{6g9;}KH{^)Yr|T)y~PdAMG2_AD=N88aplD?gedCM53h91Z*KBel#{>ftk% z{_KABnBC8``%#4OJHK4*2P6NcS^4^eANW5I^q9W4E|KA@`DVnt)wh?FANxSfW@Pd_ ze=04bgd`{TU6eAy`xVMEP~kdW7tIST!t|jF`Zjmiq^j14=X~=I05$qV9r@5mIu1OM z5N|lGsvkkq7AO6h;oV6c5M)~brp7=^1xLOX@&H>OX4-I0Zd65)RQ_vf#O%cLa126?s!FuqzVn1qW6YFDQbBhvvBciUQ>&Y}obPyqcc~0?UPKe3 zr#*Qikk_4u*dt->^%?9cTKJ%JXG@DMz&gW z3MO?NtlVwB@FEiZkzc3RKpp+L&T-P2R&M3yly$i#80yY3nimV-_dF(vhqlOeT?e<%UJ@ z;(97B+n&wwIk4Gh1>w>Q@N1p$b!H5rXIbX8|KvYMpaU%jM~bjxcz_!>3VfHef{%-TK?CKfeg{z@gg~V0h)`k|90!{);l)Iss{hUB z6PKvk{G?&OCOJhuRE=U#oupDuC*Ac4yxR+zuK-o*#T4ds9hrXR5(e<@j{I~SwGBfe(QXkEOfqe?3`9%1DFDpv4O4Th| zyQfC^a_zP0z}Cp$=I>YEoz3!-~N|K-1VHcG%O1iqxjf%yMGO+LC2N z8pmgYJ_KR0mqbPt+cd4V=Z`u4#!?5i4(-vWJa^aB!!q%m9LXP>WY#5dz0O?6GK{I~ zsM52}Xd4HU2_At!cnYei z)|yyxt)v*a;)F!I&RfRgXuDWcRqrgD5ldOe3SDNP@}dm~x9U@e&3Y3*5#rQtcc_aR za>JTyg!{aZz(9c)mlbKM|Fw%Rv8pJ!G)w+a{+n+qh$m#t6zF8cgfRU^0rJG#%my>- zI`R$&4hBcJc4;eohtyE|wTx9^0&fpZ3Ck%2w%2A4c2!VZK>m1MWo`Ra?)r9Ynqtb0(=?`_ zxpDq}rm^>{6N3789BJUL_%YsZWAgApCj54%5UF4vb}{`w{pN=T2%y0f;nG-cEt!C_ zR$JGUHu_z+My-BvJEquOQ(~+26qHl5y3%uJ`m~XDBr5X%>S#bD;=TvJtGus`P&{Pv zu51OIGg6j2Tmo_nEOa>bYVB$AuiCN0^uUrfJ{(a>_JE#Gxibau<|YlGyT6%fwch+n+~m)_c?R2uv{G9 zb+2C}#*O@jIi=qI1Lm})8==r}D=4a>1p%`h3`M!Q4~h3UD@V5*Fwcaw_9hT6-lPxl z5>c@gj4a02&(^Wo0y6HUt2N9=9}ZK1py2`DyHZ|pz}iI2kjvA1)mZxxnA?l{hX>*U z1HNf#=U>0%^l`K;?MaT1xGv6F(5prD7PGc zL$ha>nOwZe%P^y?m{R(9qLegTZ;GN-FM&_h7v8bVAUojV@xREpPd`T=RGgXXzp6MO z(hNXf;|`kfLfMkm%W*DQqD>Ryh&ezlQALCP0t+=&=0S(1vMbH}@$*C;pY>Pic~3k0}SYK|SYp_xEgyV-kj-Mtdy{BLrGv)N!( zseLln_JGO4vmO6N1L<5ucT; z*oVWOcPDIBd2CoKhqrwI5aJC~?KVdfVL45f_X(bcfh~wD+W!2@bVIV)4!bp~hMLzD zgt8S44JYSxtVwYRs6Ds1h}(&OFPG>Gq>s5bn3ryBs zuntMA*`79#^CttXR@fq)JW%#{?Ncm0tDsgoNg&W(fxD10d>f8pN?&q|58P13;|WHW zJPLj#gq)j7C`#BOzwPTw8&R%N0;O{HJR41kO@1;y&YCm5k6EAm+l*VF>zu9ayD&~llzDE5uly|!@5v>OC5Q;x7H1GEj#2NFIlbBxR?$8s2r<$j&Slhazs0p zNgrQK8DFKn>t?02t_-@G2lXddX>4{FUDZI3x(@BX3^_D=`-1IU$0QyWvTs{4oiUB} zvuBXRs%9wqt6HnYPxvCP*bl!a(6u070{!^yXZ~1?QXdE~f_9hf^_b$;7joTcEN@em zM*ns7PqIB{3wH#?7AV$k3(oWg*K^g|3@Ay(pA$-NSby==DweU#@#daB5fG0N!f<#| zgPZgxcfNcL8+&?$ku`=XLEJAxZWcyH;Dp&ib84;eO=Dz@bnM`Q3YQkdZ49WaPi-|QCw(;kR*+-yknqvIFp3IF z6At70r|veDwXlC78THY{ZlqdAFpHGasx7D9qvfdY5^~D_PKo<=0MWLsD*c>@U4Cu} zsVgYgs!PX6Og8B|&xT1ppMulb!8$(20J4#>V<4mb zg@)Dpi1+LWQT*oJWa=?lOr~aT_clPB-#^O(kn(t{YC+vn_i6e0#`5aLsQGiI0UyGy+2E&6 zKk+6Naq9MfC4L}to^yHhpbW(SQV{IL&!rs;d)}T!yre^;rJS`;Kz-+0fA6~v&YX(}|*73;GY` zP_&KdWV{%YvR1~j=c@isfG`t3=MO*_Qj#i3sGjXO%0uxBSbPr*;UEso+b!?^1eVj1 zChaumOf@mZ;Z0IqODq3}Q_E3?`c;bWUlVK|)5zKAd6)xZC!=A?2E$+m-(&%uq)8D( ze*6D2axS_!RSXI4KnO7sv+x-8P-(alteK2kUc$^O1_R3rHn!DoRF?^KA!%hPf=j zHL?kXSiOwt`LyFys|WKeIs5UVHP%U(gDUl`UVW7)!1(zus1=c?fu6{5Xc6T5X!%Zz z8@5j_n?JWL%&5gAsThe+u90i(v!CpcRlIr^0}0G`GSM>NiUUqp!XLe-M89Wdj8p3s zQ+ve#VP)w*VdekDgP&qwpT#NgpTJ?#w9kJ=K5$|`E4ThYhXIF_#ee*qZhZ~C7KMOo)#0=!(PukCq&pAi+D;=>XL_5deUA0<3X(`L{{<9EJRISj5N=Vg{azt-8W9+)K zSmtgNLCt!Or!_A7Ww55zrh50M@+>kFLl3J*g$N5ZH<_4h7q4%f|IsNf1TfSsj{&x4 zqk;eFYhbf5eq3fGWxckkQ5b44!9sfJ^`q(z-#^gxsFAU?Yd!6vh22cSP38j<5q&YwJ)s7H^&P=E@nXkeKUcvLN&L%HKU%jEUi zQq~O8u`f1N9Yv72Vt+K1V7lG1_qcCEK#$M)5}x^JEEW5w^PsBAhA;lAUBOtV7gKQ> zB!>;6$&jaX`*7wd1r5{c;jpvc?Y7G20q?sOYiUw4S>TU+buB`Uj1$@dYMSo z$;r0PFix+Bq9lRaqw>oKlBxoHAT!0ke4y6c_zR?xg{2cD$;QErI6&nfWWHwAUeMua z>&Mh#y4>HwW&7=i z8Mj{qUNd91Qwh1cx8pxl5glM8;P1nySFC2e1hPJp6hJdB?$mmfJ{M-|5_?W&8vGvG z)@x8sRMH0nb|M+w(XgteDL(Pd+<~310`tO9s{#;n;ZGhLC2AR_DT~wnM-cZUX26BH zBYQu@O?2=21qQO?nLZXj-f}V1E*6QxLJb2XyZ1KfNLFZBooN|YQY7OusmIy=Rg?96 zzZhBa@d85DUt7$d3XbqbQFKpul#E7E=c{OMq*vzy^JtmVluslXBZAh3yX6oeuZcd7 z#ao2$gBya%B`rff{$bF#`ioKj;XaPOELFV0Yrx7or{FQvTCm0;0W8G2;0v*_8RWN<;JI zOzc$?{MK1Fnag@&e|mvhVl{&SlVCzeh{^j$xTv4DV2*IWZ zS;Kq6a?LXos4G3*=L|!K1nS#0FpK{X%#IVj1QN;aXlOG&XGG*q{6T);4I(rUFZh## zJTAPq%LjB1G=Rc%>^FM^-rJoB+z*oX&?{2=H^}c_ttB5SA<(PhjMc(`yj}qTmI%PD zv0st5W#uG&%5y6w^H5NhWF8_q0UvsGC*+062Y8QxtyZ}}1SOd8U;^l2K>r=3EzKU2q|E0tRiNU%e>`T z5v?!20ZqyR{`dn>cgvLWSYVCG|ANHXqMZG$It!>Bc@%FGBuAr&tsW0*v z3U*dBGUHF39@-4622)Oj0r{ICG^A`SX>kZ`^Vr7a=ITJjFtp)FcC=9Sgxpn5Rs>-0 zeBj7rg1!3_1Z)CiR^x$I5CFP!o5SulZf&%qz5DTZ+VbDLscdHEi6ATV3gxtg&uc(5f12)=?K!+@XpPjf2sm62m3`5{T6 zA-0LE&p7nT+9?PO2|OvNuO;AruAK1@7Otd7aWPaZ-3uaxFSS)mr3*sss+go9{eH}b zKe1W-zb?7|zxqnXQ#b$FdmQk+=DkvwN;MB{WuHIxF(Xw_3;u7HOPSCw_0e6;JvLY= zFZv?m{`CIIP4*pws<9z$5a!A%ET}Wk>VuC!d$y|e6eIm70=32RR>S_+&}r4VILAt0 zVWe_@hwigdy`AQW;wm#vJ`tf#-jzj(Gk5pHug-fih#o9+u^q6P7uGJyBrH(!K(gF^6R%eP*Vs`ZCkMJO)FcCd1?CW6*Tr@kS`RA1J zOv5`cJR(R$2v5|QG4#Wk4;gy{ZC0g}AZXXfx{M?0Nne~cSDlJwdA|j&11&q%B|}|~ z&|tvZe_J%Pim;~;L#kn&@~QMrq9z{xwP{D)=QGNDkt;01Bd&3sxMgu;Z2Hp*HzOmr z_0@VtpkGv({C&b_Zn}FqngWV|A3bX?Ax4I}>JGAci%BX4zh;mCY&3d3+fN~v{bBN0 zU^!m%&-NjY3~6nd?ycV7Xxykq(+PS%J1L^Z$C6qt8;uOnA%txLJ1h7@zvq$5p~1Da z2Up=JJPG)r555JddImkn??+n33|pI?%m6}8U@`r}o7l_QqJ64UA&)1FEU;dT{a z>89Yn7+tMapZ%JUPz#>el@op2gMy@Vi>yv_AX={c^DK`OuT~xE5IxPGy5JBhD;v_b zZMaPihH+I;GWbkAvC2+fsjZy>wnz}6r8Cg6{AwD_ov>A}s3zeCb`|CIHf4+6C_Bs7 z6A<|Cd>XJZp;Xs@^X@|qXDMF}n4PeaoI24tC|KjN`QpxUPet0_MZH3HREImT^sjNH zIYliF;THkj2JBSNk3z9r!zP<%FN=;XUZOrWnBG9Xf`=f?Bcal(eG`)LN z@xxk{R-xPVM7vkoA}7ea+9%^A;hzJ`T6(ISsjZ(+S-*>656*lX1G-Big2!)qwje=} zu1A9XGv~rp!NI(~$2Q)LWvzo-#XxPSDV)`6C=jSXe2#=FAgXCuIq=!}c9zC2SOc)R zu)0Mba?x%1a>jh&9?2Jk+uO=@lQbDRTWt6)!65nZethCJhY@8GVjyUemk0jH@z;>D zQ~U3Rl-kLtH9s#b9L(e1LPWtk~c+FAWFq#+XV%6NpfOuUr*+K|@zR;ucaQu^}Ko}0(% zDAM=|u^ui{v!Y(L_0#5ypql9;JAD6&nVY(%1937q8+s$ZQumpR0N6MHX;@EN*?5X- z5;XDzt85bkB{}(N!VJn8IoTzNT+awG8b^+lK0Ea3+WC?9`tqPWvdfQ>p!E_^GC#M_QxS2_zv+~4`}%?-bYFQtrU zWzZWZXY2;*tX>(v7l;Smpbt~;i^#DWS{g8vr3e0X@_LsC#9eD9UO(5pCISN8&1hfV zj92CcE_^r~N(G5~uE=WQYYKPBGeG zDIm+IL4wv@3uKB+B!z4cGS8L1q^=>M18y{qbPI=2l^JPJyifi;{;s8p=YDlJu5CX$;lTA zH@ZAsLmDaTX_vkKWEh(vU$Refh^OAr{IDY`^W(1_QKu9>;V65BO*ZX?D^~4=K4iN% zjEgI}5859*0iP3TM=28z#SYqW(%uiJg6fstq_sK2B79u z2#E$zZ`=B=j;MQEcDEl{L8`G#mv>b+WX`;woUC;4Icm?*C|QGcLYfIU=3AkfKX`JL zOap+(O(!02%MT6(+0p##MX7lt_XGJ(XF*H6;Pr$|a<7RM@yn(U29)Q+M)Kc*X#sCh zvnqBsJ9}Em=zGU;;Q&*ORp$e5enhscW)eo=R$$ZuWe&Z_xMseHxcZE^H)3(}L>xVA zQYeK99V)t`KxcDHaVK}K@ic~Ph|+NeGS7EAG{O?7hXc5;+pTXa360{tTpv zyAqg$0_vy6BBb(rWeW_h_=a;9Wo^Gv5E zIBlS(&zKj-r&mf@Zlj+j7+LwW1uSr1)yUpBEoOn#vOnc!%Hyq8iuC_KJQs=4(%)jg z)jzB)l_^=!&{d_m9y|;5?~mKxyaYnB*2P-!UNSemj;cCsx13Lc!*^mTYOlg!fxzpf z*XSS#3#9AY@+L9FKBM?&>-6V(FZ)d3n&?{k@M@P9X@41xWt7nfMLtw={L`k(E2MK5 zg%8C-zsS$VZRi(9t1jhNmhB-i!_-mcK17mUpda5ak3=8RP|c9QpTgIu7>%S|BC>7C zsC3FvS$Io`zvl8;LN5`wQ~x=aw~lG;_;q%&oA~G1={v&JU>Ppqz`&nzyqk#9i?9k+ z{(dD`nMg}fX|!)(z3|4r=JBiFdY`l+nJhVs_IV)JrI~a;vK?M+xfv17m5VN?_G;_Z z-d(+n0aJ#Q&b-0x&hbd{fx<@uovQQ+_M1hOe5wjBPzlw?xP>-D<|R4=G)%OiI1(Ns zICQa}!_HqENr~j~+ZzB2i9Yo;4oURAv`c{^sSsI}80)tCvB~4Akw|z#)uGc~nS)J?DjMY$t&+anEfSs(ZHIqcTXz^LOOd`(4wSb8@WrbvMyUBAnp@?=W( z5<=}}{%idIlBGV?jEP+~Q(xpS4_cG6dOJ~#Dn^rG&Ls??f={X2iDx4ebT~rz0|Px-5C04J6%I1Io{3JJBco z06V#nX2lVJ0fY>M0T`gEt;D!;Qvf1PI5y0%)?ia?Z~l~=8t7e(YzCrHZCp;=u}5xC zde`Bwhw&C<_j%DjWNS!HmFK$9gs)l1Oj`M^_(K;)sE=M_4o+boy@Cw5>sbF#GFlZE z9~W7e^;cujNQ(_0tEeoYWwd_Q7fcAj?vwwT1Rkc&;jvq^OMEqX8+&vrSa|c9gaxE8 z6OJM#$y(y|)aN0fwJx*+j3P2CEG5E*oy**=`s3%U^ULazrFO+}x9gA@^*r(myJXAx z4vT^U#f91hE(^$wJ^-2m_ApiDv^tRhw9{bp<3S=zkN!Ch{z%Lon^VwFB%JT6#wASh zH}-2Gg#Vd24+9~%`ucF$#(&m(W3EVUvn9b8t%IU5xAB;m)8%POIKl99lMmOt%O89j z7A}c0v!Dj}W3LFAU1R5Fxi3Gy%|0IAx%raQQaOB#Al9`fINQ;NGoz?Y zSC){DVq%pwvR3elmv{#WR5^G66UL+V)iCtl)2uxr6$lVZ{?t8VKZy7dxW=Lk3OuW+ z4_SU6B)_9fZurRS%kn@Qfn#UTMch2pUu4{vrt%$A@d;x4A19m$JrAv0!y)v3s)efWbo)$F*^wD+qB5STAOQ0wva0cC*d*aLz zQ{6!bv3bsL$QL`C{y54<`^~=XeoEX6pn|3z-?N;P6RJq*xeyBTE{KKYvX3uaOv>w2 znhZf#^tJAh9%bkz0~w_h0#44?X+;KL+}Zu9Xb zHy{0fwVicTRBQkCm5@fdK~kip#obx>A zJh6Ujy~RJQSp&nc*_(Y|_xHL!7g(Q(srN4xT440AD%82GwRW}!)3O+QV)}=nsf5h+ z6eN53SIq0d4t&k)ZhyrXh365^yMuv^R@kue`g#~3!~_FW(b#aS0gM$azzr+qIg_>{ ziWQ$cZQ~5EYm0j^@nCz1i8rjV5fwJ5B{^dq!w8;o5aMV>XE6+j;+JqH6ZNy zLdSZ7yYfA$oE1>Vh>j;#`BnH^%}*JaNpflr5+BJAot^)HT~NK|r_+XP?Yn|@zs2&3 zMEI=NwYa>P5_RrxA3EM-x#1sI3nta!!SpL3y;%U)Uj25GNkVs_*wP30&Wo zj2On7-F#RZHKCIRwz%A+P+`yfVoa}MgkZX4hdy=p%G|454=bJ_THswr!W$T8CY)9W zKfB7PnFN+y+a=X1nd;Vyuml-$6b)KZ-xsJjasfQVwg6BO8beh#K07KEiIP@Fl5k>a z3h35W5^3|cS#nN5>1H4U9?G!lmus^UW;FgYHqWkr=#n}cM4vwRApmDIz@d%OXCO}w zE;qdpv3fos10qOirC)Ypj+iM-Z3M-h0j26J;p=BG5qpyB_SBdH)-%f*&kL@<&C{4x zK;rb|DEI&*MBVUaAmHKMo%>THAKO)mz5`ffi4Fi5OlKI7nG$yTJq?$m5*WhxVh&O) z{_c7byJ|RjJg|rgQl|}J>KC%^QCeR`+w>1(SvFL4;@wl_3#Mu}%YyBll&<>)#J4EJ zmIl6eVesQindX(K!RTIOqhOkLBrms><-JEIVh^;dj2STVko8TM74hp~jiHzEW zou(aLsr%m@#lmm2QTx)^WR2L~)^R9F$Lm?sMFDfO{<@ce%U8UiGUQ>k=}Xia+WD+ea1j;bzisi1*}m)%lgwQl znK|G_S!$PyppP8D`N9s2N0eaIk~< z*gixjv1{7^gj)QiJ6wQxRzi896q$2p2OAE=a%mJt<ogPcvz%NPVeJ&pcoR+ z{n4)qNK>g5?9>=XMY5Hkwq24cTj!y*JRWL1d_6RQUiT=9WzKZwXAKMbJV}pT8yU)C z4pEkC9|^MN2(n9vyE@kbgjy(SHnn7LMcAz}tkUNOmlPI2({?oL}qAwowLd93)N`<^G8 zaR(|=jTa5)&k~j#B38-91HvAP1FtCSEbmLfaFjg5=ZyAo%bZ)GA2_FZJFE?rYPNK< zChE0`+F!Q1AKH}wMlio$?ZBpi(_zgD19hcrkxio$p^twYEM;=-M$F~m6Z^fgGv(jX zUX1taD$69_UBK_L*(TXSroTG#cA;9#|I;rx&j+? zH0KZ&l|P8}RESvt*$vgiGt^oj7xdYyoU2nFMX~dKlZ) z#b1CRC26Q)$2@}7R0nfHQhas{CB5ZQHo2N%(obuuHg8R)JfsJC9Xx=I-8KNz2;e7k}%l8x)!>!JxR1n zVQ;-JPuXM(pQ=@#fUsqPR4=>Y=S#MTU$BD}zdk z&^jwhjjM23VAzP*RWYQ4Ecs9x!1Q7U?G~({4@1Rn%rJoxLFtKr9ai2N_}1;c2s~H~ z!V=OR$c@$)`vmhdqEvw}tM z7i$?izs{AOf2Y&z6?hg!t#$&o;0tO?ks_GIm9}xP>;PDJ`ORw@3tn(fKZSLhg%2*$ z5A4xsSRF820=qD0wFk)|zFWm2ZOIJ*}Gq;^GmSs2Z}{h~A# z(XiiUTnC49`Ka<@!UUe8?Y=mwxBkO7W}7AD|6-f=VWm%1U}zDhUOY5&XI08&kmnea z@hk>!^nDajF1P{9=|*ddPlkh$np--`woH+{X=%>3S|vT_^_X?{o(Ti-^1!?<*u`!G~M-T5t z^Exh`cd4)1V(KJ~TOIw%9eZY5VyPHM6wQ;)<5A0_d1|*^qC!mmQdPq+_QcVk^Skqc zTshca`xWyLPa1G=5Ue?ZbLFIuTA0H1N6P{$wxjuoiTSkRgYp&awMCMTfOoABLx5?0 zMG&Tw-O8TS zQuUw4w!C)T%5lei$m!&0jJgCFCDtHtj*Yy1U35AgP)KTatEs9NLBX47D=ei-cs@-< zfFD@*2VKvR&60TOTQJ;&o3lBl_-LHh@$^R1C)_D3vvuZBOkL-gNSh)}kV@(+CMk^e zOi6G{z_Aq(_(n$pf9v`Z-o?fkH<_ym;2@hyX#b6a9E**u;m*>H(UC4)XrA93FZuT6 zA_hxsBP+!PwSAIGxn^9>bE;e8LAJzzx-4<1w?uo(KYaSGNBIr#JHmlQX;Pg#V@Qf3dw>T&dtJxTLzV=ml>a7 zx^rxkSn}=cN9QV0_s`r=me{-b@%V2ibABeKnP*`(w(`{qeYhMdVg0T&UI=(RV!a=N zbf%|_O*MG#oMeQ;fNXB-Hsg1GA6xz<7Y^=bt%r4nqfhi!s>35029{6F6(u^V-vrG^ z<`L*TFZfzKB&Pc~tlFw%duQM3&eLUZcDri-x=#GCMmpy}zZ+6^--32+c+`Ap4ixpK zrwC;q7#^9vo;x}`CS^V*q4mD@DDU{C)N_RUGWz==A6e!e7R&XK@x8veM?DY@3 z*qyX`WQ(HyB|-)~D>tkW%nt}V%JoIIm7Ly+?tcMORw7WA)U6N+@ze}t>&#m0NaX#$ z;^Ld10A1?oKI@vusOx>KX9aH&osSALoAS^U4uzVnZ1{f7YA0cnKzK`i84SHw5 za>URIg_)%tp(8rDXjLhe3erDcA@7deCgb{NMB&F?DMBK%3ZVQ4D%9F^;xF+ccbqgb z6~K8Pq&1>k#LMTkiFt`s*IP1$SskgP>Kh%z74K+o3OxnPSqe)z&w>;+rb;n6gg%r3 z3f@wT(DuGd1i_ByAXGf;Ud7`KKSBFmds7oI2x2L155coB@i_G@^-;DYNsjmaC_HPl zVZknK876`c2~=UA>c|vz)tvw}5%b|R#11zSKLiXW?6lrh#ZNzdd<}M`vcH(uajXB= z5s6h1@G4Ms?unk(!#M$EXP}wdufb>G`uXw~@Yy&?q(BKhazIY_s4?|;+u3B3(^ra%7D z^mmlypaK27Mg~N zGWSwmnCx-@)-VPFSe(Uscz_mb8e}RA39ABwe64tOsap!5Y$l5rCS+??3#nfi?dL?N zH2@VRlh%of3&hFUEf0gl|L)RGipy_waQ`n+3G_&c@2+peqR0>G5+{8{SH4!qqxP#- zrzNyfU2Q#dvrLf91KlhK-KKPw0!5m9SPdUVJheUH69-10*pY6w%1+=nxU^@2gUNP! z7-iauZ;J}ayi41V2x$OVb;tv(nr#P`%!Hyl(2c?89S8n^b~G#sTxC`xD+YjT zeHwv68~q=u+^Ub^?RJTjipzs8Z`@;|st7s_)SQAQ@tOg*)fjDZRGU37CFH^5;obRv znIW^QK`OV`6`3lUpZUkMBXuy<@@^1UbgFkO_K!`s5C7@`Rq_t%4lY)EHD^6V-}kXr{Wp-| z{H>bJmh)Nme*8z{HAJg~0ch7@O*TU60kCq-?QS<3H~Xir)b0x4XO5jW9U4V7E{d&N+ra2*$&LE30*Ck)-H`^gb14l)X~BI`JlMVysJh{)tzMg9 z#lT%#2Fbq}dML|v8g9;ckBP`t7@p<2#Ze;DoLnh;Tgo~0yy3?b8DX@A0I+w<|F5H8 zHN%5vs!jSsC#EWpGnW%}a?j5^B#GxuWcU*~fMrAfPQF`**B{}mw30T4!A zx~GoAs`P?&rH1EruqhP6n3X3yY&rXqXk3=PH+ip#t*T5j*%xhJdK}O+NS269TIMzJX%jc{}@~+FC z8Ra%D*fnPCbYkgAGRkl2V!k z7s%wp7o|QF>qmg(9Mm;6aMO%hb5b=ulcFdW3&@`xO$#1VbpXSsm71=RLfN(RkF%*G zg!skVI;M?djS#?JmoPXm07Us#MvD4lwdFpJ&W)}?Q0#7W94Mt~{;V?mw(Q1!_z&ak zG)JFdBvm6V2@d`<=tC@d-tD3H>yIqYVz>UeV;B%kes%Ud_5^LM_ouVrVa*yaz;3B& z(sR<|DZ_TX-;*$w-CKVg#GcItn%2sMwC)nYWw&}Vf2zcWA^?BwhkJk|LB{{epR5S_W`hy-roCr-#l7LcTj-BNsVO- zuBFQiDE%*#KW-@i%>1wX@!k#A{;DMzxb63HD|U+an5Axz|9Ug?7jeJ_yKLnw+|)Z` z-(LBr67-Z3wFiIoF(L{6fmoe0>8l&mIalf$Bd#d2{Ap%wnvyvQk3=-@?la=U%ry}Y z_zk1NZ=)8Rgd-Q;)>hvK?5v|5B_P=oX&srWeiliEcK*lQ6m$|5QnoEs)lR2M@bget zOh#D{nuPUf!B%s@`=!gTaM5cVC4hq-aX!HU=Fd}GS`daOL_4bm(n3d7H)<0H zlx#I~ynOJZjb1t`GDQL%fzRWvBHJaTV%6qp{N^kERBxvDQ#{N`G4|>LRHRikYqY(& zA6#pEujT%!-U=j-^G**kTR)m7yJN`^Iu(0x3;lu}DsB&b3?w}Spkw|s0Byfm=Gzdp zU&xvt39nH<*k=??ew*jDUO-R}#FzXC>Z8Yy*!m_1X>JI*Ps`?Bv5_BPbO>}v8?%Ma zKnQBp2p{;3f*(C^JHuG$MYhuZbgcfMv3bx{)R+w^ER7wuP4;z+#tf7KDX)JB^Q#I8 zM0dk;F&M*)GgzAP$kiKx!f_6=ow$Ps7^ATPlRR0QneV0nlZ2}Z_b`p zF=g9xbjmQAt6m#s&tJD;z1+ap^fGR|m_37pLz6MS71g||kWa1rK>W7T4xTUk=x_a) zp9)0Ve(iW0HT&YcW3akM8y&(XeuO~1TUW6m;%v6Z;35M`at#R&Q)sL z^FT0#adBOPpUn08W4$B`bjrS?vqpO^Cn_7LnS_b`M%9%&LGU#V3vdr=WpM&S&=e*% z)E~2smoWxxL;I(g4<(aE#sJsU<|GCy-0a>s4QQKD+fJ0 z5Rs47PFnt0bMLq_G2~D0EN)S@m7NSf_$}ol&=@!iR4LgM5h=QtbtXL6O6wC>jb(lL zl&pFAWDb%(SZCwjS9*IgQI`GSOI^xs57;wDJn`t(=^ZWT`Z(;NVe8e|; zpZ)yJOEl1@y(ePl5gPTxXm1uZnvt*k*yzmYVFi&wUO3f5mUNP95kDI~D_RFK-W{e@ ztsg!&G9NW6-pxxc1=oBmGxy)(4~rA+bR+^(`{`_v(#K=sr@N_Fl@lB@w6WKPPb9%d zLdBlQCOY*B3XyHawKBv^39CRmw@cwj+DVp}@4bVb8yK$&F8OHm#&&EwICjef_I#MG z=VDfhL)T;3sY(^(!1>-M?2(Z2nQFsgX#8owRIlAkkPUGA!S;;-{z|M4cQ(9^j;PUzG#5?|qxP9^dmbN9fDpD3wK>=P7+@+vm5MM68jc=%Vo zFmMhIb`x&#XK8R|B_#2c_`|aZ)tkOeVhF}TEG%A(u0{pAo|-FcEcJybI-$cNuIKW8vflN3d0g3xd4;#g<_sn zt}{jOx+zI@8VtQWx+4lYG72HY9Hqo{u^^q6QlR)SF8~U{+Ue0-A=?0P$WkvjC9AZs zY^5u{IV}rJ2TyQ+bTFUjTLvJZsZx#=LEkb+cwLrJEW4FUI3p=MD57h1exu073M~2b zCTGd#ITr_=YINTCaPJ%j+DH5r4lm7L$jdzx%@RM%bL3&!O1wdd#@+jBj_X0%pbECx zjYa8W!CL{zQc>(^rO4MUR8dAm60(#r7y{9dz7bOu9pvK05V^^kg5y?wf;5GuU-CwA z&Z@oM@fXKurzPvwi^D0W5~yij34V^kEbVNN7K!j^GlZRsR_o*nv-mdi_X(2@9fKPeRp(q&Zc zqIHD`%5eBQS0#LDUXsZFs>UBD^0r|IBMuR`jBFn+qJ(_dO%Ej5{+T z2Legr?|j77D`OEZM+@hc2reg@M_{E2T=Clg-XHvBcamD239sN^>XtIOk9awtBf1$P z>Swx6&b-r%tCos0WRJ0d4VFczu8{q{;55sv2K`x2X3qAuSM^egyYH@WAG}VMVO`=L z-IZOwzsul$(I7NDH^>JbkX}vwHFH4kSWj~?!)J11T$Jc~C?vBGi1vz0frem|M)Ww zv@b(3n$`M5uw`Al{o(Y|`yw;_0l%m=FL+e8)6kZ3-Cce+*S&Rb{8e0M2dOv?7D!y!Jrhrxe}_V_l3XBJ%2<=#l!j$mA+K>R+|s%*ECQ$=?;XT97YoL} zydHhw-bL~Iiw7QMun42rys4-?KpyDx8dKmlx6#=;QbG48jNH?EwxUvnNa50+hR`)5 z?rBSHRh214`~y%$knP;@5qs@Xf5X}zt;U#V)@yASDIubL6yKHJZ8Mybb-6k&EwY?V ztdzjD9-f=S))i7B^F;QQYBG6-qbyPe+z!Z7eM|5A(qtepKJy(Fnh4!LWH0R-fd*uH zs800qUVK7Vo1}}<2XuEHdcxAAzZpAa09!hs`j+h$iRUi0}f0KWP1giW!%58PfXlL42APVZ{E_m zz`(Da-0>SqgEI=$NFLw0p3^AV(V_qtr#Ztrkqh;y|YMYmsi zfBjbK@H@5x2thv_&3r#4#!VUgRmjiHKJs9nt39uZ2Q)2xv=#|-fH!CUPQFs`bhff_ zW!$i`pjkuWT!?Erko0ht9aXSx<4jHEd<9Q<;*x#ap(64%H7mMHNv2il_AQI<@kMpF&ksaY8)vD2H?d6LU3CVWebqrUs{R|Cb5$b( zSkzopU(DeN`}f~W-`U!Hh;LGJ*}MF47nKy46(Tv)$Fzsgn1bEhTV=Pk*hS3zMpoPq z_v^Q_)O{0AIQL5>=T9N|+0>s?YRdH(ghC}>ac8_coWSMq_JgW~j#O^(rjAna>=l;k z{TSz0m*~eOZf#pIMEyA3hu%dw^}9vLstsE2rE_GA8FB78*^3k>6GKWje0qx*x=aYXUhyBROCy%xE~|8MLy!g;>d5Pm2Z_Q5wtH-6nz$$ga6j*486gJnyVJ` z{U$FVarhI)V$4vNB~^-2LbNG3KQPyh@o3@e?%6C%TH$RR`KRHb-}-7*GhT!Wk)~$a z$BG3IDpebR`f{vQSC=BKBwm~1le zLT!BOkBJW~EVcyP@_yDMymZt^prPQQ5o+y9EV_?2t9`^~^aE zDSX{6gz$47l={M+KkDyw0{2RnGDA+!{=1o$So8O!&n>-9H4lLQWA=(gfMlg zL#()s?=SVr@zNP+)-7sYxhZRPXiEPQgDLGnCbD)(s(cyWxS;#3+GE+@iH{R6%>=Ufc+gz z>I$v#g?D{I>nes?0ivjBO^lhe)+LOa>%1-%1QREYK7Rf3vFCb7vmCPPDZ5y)^bw9A zu+GO@CLp$41xMYiV3P%$RQJoRXsBGVLJB7snbv{`xhH*thC z23+NCo&LdgOVf%E<1;E7ly++Qwgo4wGmGI2b(o4^x zNANT0z}bOszgOkK!ClN^^}g{)@r)%A(ubxtT~U48fXZkX^F{NP0rE|DV|(0=OVtRk zShuXbJ+ffYu8C5@VZgt^pO)EO2zGAw*1qw5LtCMJP!gK z{jXjNBcexnMoaDnJbud)LTz>}S5wHy2w0mN$xGbtFQvm%^jUrueAecFF9A!%45uwb zvHm4Bf1Xx%!z-kkHueCrzE&Y`80lwAu#!`N* zP_izoRcKBvI|QU~raFq3NZD*tU6ybUqoY)Sw%1A(2o+PFGL4i2^#yNH{)t@$zLonG zvrR#82w8%08D=WN`+pL-jQ>_20Acw*c~BpY(qOmP8BNUdj*}=_s$l%jPh#iSXV&Fp zL9;KJLCwxc_$-Eye?0a06)3Zxv@2^pF+#d1|AgxU7G3;D5ZNE^?*G991bqBCrdmB? z>peyL{6!Z9Yk7O}Ac-6xpwe-FhZ%8y@x;$Buj|hrFFxwu6Z}ICb0j}-;gpwg(9!l* z&%l1sA5b{9^Yea`(U~Mi3l({VJTDORthqR2)q@bnTfIF|?oT?levQx`t#u{8aDK(- zs7L(8O8tJUjQ5KI(aZsG}iu}&+>c^x) z!_zmM|Ix@R%Kxqn()IR>34MlXj$pt1Z2U3D=Ju0Sy8)DpI9qXb2t<;-Je#VThIFSq z9paB%<1b(kK*r~JxZ}uY5<~`u!CP-D?kw66y3|9!W|#Tn+!L2p`z!+Z60G1i2rDnd z9E*|NYodmd>4`qySK|WzzSnI4@<{5hL3JFt>?()Pw@;SuAzl4X;-m&}!Oj{qB}B~a zCsgO)X?$(5^MEP+Y+jn8%w62YpP#Y5q%T?MG%|s;z}nFx(-R-kevHn6B#&M{8>q== z{;!(w9LR)DZ9H{kWll4R-cUWt8~Bco?XXUvesd%X;*~QyDhGWEo)c4mN`d`JXbo5P zr11gioHc5zJfz^utUlB=~xe zMHf>{FIwH;s*6mY+VRh|PXy$h-z5|#{Z;laPZrZdH=)ve8ThUrqt3~4r3 zOp6_OJ_`?rV?RO9Y@(J@E?g-~wYJTrWv~6X#Q3V>PWY>v=-J)<5AA+ z#&Y4u6qppWW&XBGiJJdHyiXsxF^6`mg@lp=>Xx?7{K`hur*Ed988Y|H(b-qVuZ%zI z7-G}@kq4Fdn0y#+;;S6Yo+ozrGx?p@zrz-b#9vb){vp&$WFpR`r9p94SH92cO%q%y zAVti-ESHohFJ>~xO#mRkr;ytq_!|(L_daP|$0E27cW;g^M}g9(Y5(ZxfMJW5DdyY& zdrr(ui*L7nArL)*A*J|xcLLkGHb1tTdvEUwoG01TrVyX}L zQQ!i^x`o^$Ig;!)iYq+QO(UEvb)Nk~JZZ$^=G&;bDtmOc7CfN~x&Bf6;*Jn{JP}IENMgp#K#kNO&Y5CdY?#gDc*}H&luk-! z{mtWz1RY!U`)|Yul-X< zJ1>XI1KaY-#T>@fJ%~8fV`V=#N$8SxEaHUSuR0Y{tU%}e*cE8{q6@&Z?m3)`M zxQ!M>0#`aaWNPv)#N{`-pQDBe;d}9~ltHy2LxKd~$R@0*R0IE5*xFD_-cT_z_ffeB zP+U>R9NP38lz#H$fD4s9#lz?Cde#}!u!4g0bZZ`;#IfXAjy8vBzI@}h>#kzu6KnR+ zV@F)gWn>vQQu`Ripk~f9EI4#&5Mm@zOI9Gj_aV!G1dH3S!uz5Sm)me%qD-xOkqyzA|r?fJ6vLS7qk zp^N60DdC;Dise5Uv|NAOjsi}whQ^ih)LfE90_0^*)y#oByuPX>Xu!^4hY^_K#i2)) zG&t`<=+yiu;PrFhjH`QY{05MXsr4{D@Q$zk_hmxq-G9o27H7K2D@Aa!1pJ4|cYtP= ziJRJwwS@+}3E`c=218n2vd#8aS2C6GVK7E9hKv>>2hdWRs<4rgU*q84CNq__Hf}7| zj_DkbEXFqGLUC|Vf%e6|<6Zkyp!L3bRHRoOJv0n`8pcR`D3kp+L;{JNS0XCT04Ype zu8e*1W2&R8c^KTMo2Lk0P$L(B!3wZ$A9O~37V*cr-K`{o6EXS;XK(+E4BQ{*YYejN z@b7IJ<~KF_Xe=rL??qPgdX=C7yN4MGp=wNKg!?-yXvPGhb2(Eg+uESl`kk$2R9#A* z#L=rEiiMUj3wCR_`X?P^^}P;1n|yjOJNw5ed-yGZ*A;WvEQ6 zY&ovIo!F7s9|o)LU=AR#2qDh$Ec<*+$r6lB^t(oWylJmA*?BTKSPC9l zj#!w6c5Po`2Ml+fV4+1djtSXB#ladA>8VwO7({VHJ8g6k;$+4r42Es{Y0rnK|9YiD zB#I!3jCxK(JsisZ`2wbm(jL29=H1!1Y7!|-A2g4RfXnY;H`w$KLdN4_O2+8_?E@QZ z{NKM~{Z?*{I*R{o5n0*s`{VaO*7@$><=ai3D#pmaR-nK#lgae{db$HxWtwL+{#^MA zdkehEzb`{aMefUhSIBhwi&N|KcWCYZ@ZiZUf?mV#OwW*L)F;4)tfZ1eh1i>b{{>8b Bd-wnV literal 0 HcmV?d00001 diff --git a/_images/table_python_benchmark_legend.png b/_images/table_python_benchmark_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..81e016457983ce4d77dcce7c48df03748d6fa1dd GIT binary patch literal 22636 zcmYhi1ymeO&@PPb;u3VxCAh=l&f+0B1P$&1LU4z`VnLSx0TSFv2yVe0f;&MMcX#LK zz4tr!`|F&U?mly7re>7I#RvyW$y3u6JGfgIOor(i%*|T+ub7x7v}i%Q*2HHx!VGRfQIB-?-^EiW*r!H zUUV(4Z2gc+GaEOTqpMl;w<61=!)?^RX_Zsbs%ST6mGK~cu93Lrp3@KS-Lu4dXo>@- zX@*rU`J0%HerpC@2b?mqLm&|L>L(2=_CRUnq0;`LNbc4)LQ^@l;IRLd9&&RS4)*_( z=*mt2i1dHOG7J~O@xRg=wFAzZ4cYsM{odt+xp_`5Fr$k?r%qX8&OxS#nafCDKZf=r znW5ji;>BOmm)W>2dTWhgVLd0G#zz-^$||NC>c zrJ|a{@r9j~bX{&kMZwMTAGj+_-A^hcD~L;tlVb#V5e7-3iMMZDeM4wN8a?LCHIf6Y zwN6UePhM3Bl?=k=maLJjCN(8CBWQgWc9j}}c8lB*K93K$cay5P|(9BF%QP>)GQ{ zcw)g9?AJbnrhxb>?9=r>3i$ItkK&Ih*){Kix8#*la-RN`%lKgLH&1qxHmhc9{s=oA z5)}X4-dT&zLi@!{&W(E08pB#O>S_Ad?8(rQ^`q%)cupVV6$3 zs|y*97WTaMG2@valZo1%6DHre%teao`*7xlt=MPt!8q^BvTCHu0Ub_BCOS*IdF@ZQ@UlY*WHA;9}5^Q!Y zX(hMWJ0KL2xOB(^I{OWP~J*NVY)&_tSU0b@O zRg~|FX{WMlnvrgoJXy-G;xq)yMd3aKxpZoK8qEpe2cEHij}ZRP0X(Yjy=bk#wc{#G zM1){pPrN~ROJ>BL%URLafV=JMr$piC_H#B4cuUmxG`Xf}`t`S)6|v3&k)(YjYSq{( z(aYTNadNNjopZV_{b zj|UH2iu}886=o!$%~qdUROZbPs$TxgHOJ@ao?WXK6807^|KmRW`UOXomzzdlR8foQ z233`_a?1#7d;qw}{pM9>xe72;Fm@4+wSXYdw-a0-Ah$%R*yQ8=>YF!T4;r0_+x z!S^3UuzQw70WOR;E6?|I{)M6pC|!GJrvMO_La*M025;=Y@tQ^7U_K=!E>2#*U|=X2 z)_bKsDl2%xk5urfX5$+)P=>L))zL4TKd94;z-08Zp2`L}Z{1-2aTU$f4J2X7<#xY> z+W=*fSYJSLJfCTBT|>8m73ry@ysydQ%8!HR%e`w98AjCA>|Ju2jC<^r_X6i0!glT- z029|LA7ggtlgRSi2IgZFEDky*7BDFo)Bk}xlu9HtBUx!TG)hJ7PTrwH6{uktIA-_K z^z|WUe!q~CV>y1Eca}kAE4+l^e*aRkXK7pT%T0suYLRgN&}(VgJSZSzx2u2GFv)}s z)peLDK>rmf;1u-PDEI5C77Setp-LtWv>ZYKT|I^9Z>c*QuYHuu^ip9D!JYP%j$~&V z97g|Oy*8u}p>vJa#0cVv z*g#9MH(|yI8*bQb7CT;no4iS!|8a(&)>?_?N3m4c)(!WsgXb5|ZD^!=JK@WJv7|Gf z5SZ0<<#V^RLPQueN_V(bG1@%H-@iMQjrbjkmlc2^CFb$yVNR}=5--rdbC_dpSeAzV z8I2s5Ld3G$KM>XjjS)#0Z^g8H4FyaLrlo4Au=Pv#dRA%7Xs;D>=97zW{)64Aiko7w z!BM`QYZ33XZbJCgAJQilrR8Hcbr?nJb*Hrs8gico^qx|(H5zbPvdv-#Pj@A_WPCv+ z&|DI4@M8|1p27Cd?h0)X-^u~llav3nS z5Pd)X<}a3Y$8^wPyUSiio)|b2=M}+=(=IrF(wiyx`IV@e<(G6Pqg zrG&|QD?>P5Dy*~YnqVGXj6j_SUUOgP~Hy0Tc(G%u*rYteF8|liTfbTmW|P zg=(yvDVd>Hbw!1t-aKo1tjioTNjLrm8l<(|%Nwr{Q&v>MRO#hEMK-RlrfB;ZpE&=Y zKlC$_$SS78^Ae9;qg5|>08dI;$iB`78SBRDu>?v+zCuIXuBn~IuS9M2tzPmsHgHYL z5vR*C@v2AxAF{T0wk+Fv05*GzcHEDgz>}q9vi;bp-K;8lvCS>j>3S#q$^ye!vK5?X z1XG!ssv@%jck_=W!D2NOg1%%k$u3G1OS|Ot7ZSNSuwWS0Z09V5?s()n;db2${%H{uo_1 z1tpmqnwo26cw6kK$*|1FUjV07{zhip;AT}2Y}B5XSN!#ugAMBXy8ATabo?DG(}*Qo*n#yTQ1)U zL>fyQy?pJ|K89l0Iqqi&JM$$}_KJp^azft?N_b{X-vW@mb?{DwlFBJSg?=)v`Vx^T ze=6DNN2fD?j%H^^BTOysE3UJvO)m$0kM{+$t2nb3K7RxQNusmySQZClUHE{1rj<*R z$nY76jC}f?EyPmXG-RGOoC_OM=)~T-t3g+T^VJ{ZFDl(9LqlS`&pK`$Kd=EkS~PP_ z6lid;Au<{Hquy}yDHtb9ZmZtpudl%h@zf2?xiK`+zC%vGzMv73TV)XwJbD}Zn7xu% zoA>hdW#RrBKiH&7PwSS+xBs+Uxgq5uzUwNXi~wqu)g!L6_aHUz^dhkxu1xC($7`?ivQ$-6Ko+CccL*zOaTm+RR=_Q>fNY1zBK1wQq{WMx=JbV zAu4x}KU_ipkSj@09C2x4I0`35!iX|?swPBE^3?{M6=!yCxFW77UD79-wcjjSwIarA z+XXZc-m@-_z`;%Lr?)IYGVQ!Gt6jiPuurgO$*Qka&Di?vmdr=j6%8=g;i z7%z9b|2W@}$zTBQIEPGo@f!ATXMXK6wAC)x-f2HW*Y*w_e}~SA)07!JkiZes3!?W9 zI-)n%f`)@2Z3e0^2s^l>IM0q1H>iJ}_KV&_U-?7)^YTz)DITa8_wDB*YbDKWmB)OV z#$a4@y>GpmRsha^;S%W8t4y(R?B{=-|9~P)Myvw{Db063`-E6hZ>pE>sTQLs>d%7tkKJO5wUsjJI)NI#Q+vg1x$3bd@)nnM&er;PM`N3x{#rG2Jx})8 z&6qrO)TMN0In{U}OLsjdOLbtO_z_J5mq}u@MY5l9?g9yL;s@^5zb2PW8fpST3n?+6 zfqSvo#=kWmPjx#aN7KDmGktDRJQ`;EWG6JVQa#mqunW1mu4N z!;Rc?Au(NsN(~H)RQ2>_`~rti4p6**#obN+D^R)%aDYWp~7%n~CuTycRR0Xk5S+50Bq)zhd@$E4G`v_A#rO#T!$Aw^ zNtV}r{5^#dyXTSpCQoQB2~!f}nx(a&Ei8!=L7)M7yCRV}IjJ|+t<>886dF&wt4S4P zL&YpF9E1#G3>|V)dmU|bE1#u7KS{6D5qf&pp1nK;o&)qR65unVG&S@fR zy<|eAs6?1<8V!WWob(w82P)wBx8?T`tK^++ivQjHYgZ(4CVCT@Cb|G?_A*`-bEUvr z7}M4grEs{A38CzI^qMM5;cnYAY&PsH; zsVB>^6iV0-h+5V4Wxf)2u<*lpUAzAMAQH@>-n;WgVp!{=_z9|c?ji13#CV6d2( z3=tNp;(2*4cYL=!G+N5}UIeQx`}$sBJ`<&cSCX$8^+yWQo#;#COjxL3>8HOPek6Ys zK}x?KvUH9vKZ81EZ&I~bhaegM;(Eu3kj1V;LSoETAXxf>-5e9f0izXlZ+DJ9bL!At zXf=b^Uu-+h>=J^L_i>y~t6xP>wG6s5db9t~uFYCRHGfo#<+0|(wl^VO8=4k@adsPg zK|3@0n4MhDEFMYi2Pa(H$Dy{WXs7X5pfAXvyZX+<)3200h;W1lXD6WwQh!O%#LhDR zpmSY;)w9WOHOrkim%CKY@&F zRMjOMNvdZMv%^q+aEV8fao6L-=@-s6K=-)nR|NBbL(Ul?opz3EBtcu4=qnYWZ#m5d zpC1&^CGS)U--2cW!CVUP;0M7U;mz;k!SO%DdwQDx>7G=UII-bc?gxgf_=!|StLgWq zmNB}P%CE>kGW|4cuYE-pjj)j=c%v4tZ~roI(_P0{DavND9=zw$Gb`d&i@U3#LDd%} zcY0HHe#TSBK0x}D;O^WB8{PX!{X zm?t6am7BBj0v?CsT*4pw_DYB{>3}wr+gluBT6D2DkRT0dbov2JC0@h6LcszHr46|> z@G@bl;cN~zI%fr+zoUFa|3Xo^X?f|m0Rew{_IT0z^`!d!SHYx=*hM^{aV9M&^ixTO zDQAkSHRM{R%-we?!$b=H7p)?rNz>+wllz!pJA#ia3|YXzlS{=Lqp65ae>{xX-n&VD zQT(dnq(_m8K%lA2wmcsFDDzkRbGJtiIR8$OI%CMjBXYH*@1xyya);@*TJ{e)38rmg zxj`TTpjjj(Gc_oD=P*U7c>_{U!5U{RHB|+i#I)agOT&W&twxeUm{B|@-gexhzxX9* z2D6%}=Ev-#Z4KMkMn=VxGB=tdz8Y9^mdQYGj-Jrre#?rgjakCH0g3wA!ZWlk3Hk-i zEljdSj(?7NcSraWND4DZnXZCy~YQyp@0a zFVeROr$8EYr*}bdy3>uSRKh29mu!2?Tgvx(~>D+ypg*6`4efEe!n$eGQmR%D~s z-pm9K-~DsRoK}feoqYjtq?hOsnQu8+BPE`*e?@`ysneO(4q@}5R82hXXoa#z6W0fO zfV^@-+kQHLik@cv&FGD17-aN^V#7S~pPy!#Np#QfdRqe2t6;1XQf3wW(xi6&b#UH&(+S569-z} zCmof*K$+DkDI3^LlT?%C7IxiRrF6+3#NI}h+z(g5cAaj&hH1~%PbRoLf3*gTw`jiO z1lAopy5|Hoal{miL{lkb;`6rK-1122d3k%|{b3cz0}kI0uL9M4u)1e8JbM|Lz#GVhQ8g6qK6~Dmx;B^Ci@*b`G1BH3F3rWN5s; zK`Owv>8DIr*VI#8dk3538=391A*tz$D-wANnvZF8o@$toJI{|8=_i-YPavS710(7X zLmhULZ8oP4cn8AM@4a3Zz5hoTyUp@%^VFoFGFNc4JdLX!ydUuJ z;&CNXu^JFd_OL=@+N2W=BtX6U?4Ikva<{`Kf@0t-r|F(gb(wqlno035u*CmSA%^>k zaDZ(8@2&$Dz{-~4?IU~xp z>~qYUiMqH*%Xk zt*y~#Mg5hE68VGNyBtYj-@HrHgzhl_Afk!QQcg8#d~~vYV8H7@VzAhPGw|A{Cb%#w zE98FMUa2K<|LhbUw6+nv5{{Y|o6_1H*HV z-`8k-7qX?@%4vP&NqXj&TghTI$Gv)9UI_NUji0k0*+`jy2mRCA`+7_E?HrDn-0u;p#hM>?>k#Iyn)U^iv0+O9omoDOiJ5QY&;=3`53?g(62m1t{$sN2 zlkDNp{6#`L@+C#LT?^7i)$b8rM|JTbz8tDyI-f>9W-2oXYV4P zp{_tcohXiS2nm=jUTOQlcGhAySfe3sf~8)LNwVoxx8wBg))@J16HkniJIz+*Z#VdY z6ZASCbGjB~Dl@k;(*qnJhClb4)c=$IDj=Z+<~q$jmjB)kb<~UITXx0QHEZq!^Xb9d zO8qTsR_ecgWgPc0SC=DQAu9q|9G8X~281PW7Vg-k*BiR)&ZhHoii!Xd2YYrc~C}7ztpl~31idOWQd~9w|_RbfN z?Y_7O|EGq&imYeRa|Sn`6#OAaeEd58YGJHkSlIJKq_}HZNa0>v!tT)ObZO^Dloy%v zR?Y~3DpE**n(G!Ge15cid{PU2K11lp8!;CT8er*QVcq*v>&4f#1Tyb0a4l>QUE+(t z+o7yUDfUJVXF*GN=}${;HyfLy!=m;t+nT*#RQ9(~oUa?HDI85dIoX7i{ne(R!#XHZ z`7}4R8zVyuvZ^o(zd|kAzQg$qs2i=)1(e4Y#GcKW<0l@f-9YAN4cbOk?+9>>`LPl; zOpdT|LjJw}_3czPA`w}HYLz~8IJO!S;vHq;j@8!>rok%smBgN$l{e64-kmUuq4WoX zUg%lE+!kj-RTeq6pMlD`RBtq<>dU{NoVjfHd*QrZjQVjZ9L43+JmFn4CU?-& zp9b=7o<{#tD8SSxXHz*7IaA_>|ZIpE8O7@z_*>#HP335 z0B=6VuGU~59zRL{t4#S+qaE%X(67c3-n(GcG*b7wCeKy}s~Np>?~E4+!Wj6SN7ZtX6Iyv)qmBN!JyL>l^kCu+7b0Jh&d-cop&34G;Ph09MltCUd zRKj%rcQpQ%+docBB9FZJoDSR94};Kyo}NUK>hPZd6!_0*t=C8OIZwlFc%?-ZN>~^2 zx`R)~V_ZC<*L8NA5d!={p ze4@F@8#RnL@7nyckb1!|XH8*Tw^=P7p&wyUXO%?%kBWee9nBJo2Eyj3P^#)gbpEe| z5WKR=&$+3Fc8FsPhs02ko!OUhMpTU97rROq*!V_2R(pS z^rY7K<*At2sFy~p{gK=#Ue{HhZdF<(Kbrqv;WZ%-iJ@_iOP-7Fdaa_G@mSBz!Lckj z*1Eo@=ey7((*JP|>3=j?Tcabl8nf-<-puBLMfIVlx?+u~)U2E0n`8!}a35|xlbV_} z0IgXhXePx`??d*8H)tl#7suOHZr9@Hf^3@;YQlOz*{HR@*=n5Fa$fZ9`4eu=)D^a6 zLo*OTy_3P8-H;k?@mdiJx80ROO^S%HH(K!d!l!#&RAjKy(0v8aS_V9XiR#q9)tLV& zeJ;NB3n$+JThu(OFKE-tVriSx?%-X;?|;kO1Fa*rC`rk&=qxmG!9iKX9ckY~!ZuNe zk7g^SqTqitU!pL+NM?Z>+w(RqHM!^S-W&Snj`i4_hu3u(E#iHja_;kyYpEwR8H=Te zQV^u+I&@9%+`goerv9dc6VMna{I@^S4U0?_}>>q`kj(; zyxH-m*BiPagITo&+a!56?p^f%^NxvEMP@d?On;2D5UUuMGq~sPOg_7v7$HcC(DqE@vnu2D#zg2PPh-*Y#;uw+ zr1w10QQ=4W)O69OT|JVH#~c-soHS9<>)rO0KOI2*Wx3`iqcVFF*8PrCIYcYi{GCPy z{U3F50zcpR`yih+(fQrA$^4lgmL2#T8d#Kjjpi}?0hx`ZPatW%OX?o`G@5n^2vW*v z71d6BuJ+1#SjlSVepu%2;?@ZwYdz<4k>FB!u}$dS@y*rIp&b665cMZrN;|v{aJsv& zz;R)WyoU@oqdP%M;jEARG?kH9kZ|MzLlGal)WXUzA`&L=3xT)5CRma2T58W-9tH~tm! zj=-3?P!vkLG4f4?WlVb3BnotCePIVznM^C5T+63rym$)i=U`Tm>x5R zmT{xMoLw_OpQ3WzniO&E7~dHy+=^w@U38kG)G<`53*pg#(0u#IQuTT%tZM3P{OKzt zG0btunz?kyPQ55rMVRd=$RzvW{5=StvLND-Jd6ChQK)(Sq1Q^-in?(E6e(74#m6i( z2NRtmWtmrG0(W))p37RlA3R~h&H4r<600LAY? z2h(yySo#_OyzY|lpgXWq_lVkjy+J3#>2m!OIzCU}aaQ}?WPAD+W$%v(1ku*<8w;u` zOaE|ONN@0)e_y*Lm+~)uVNKMUnwfx1;T=?*{DS5gbfWCaC%*V@r7CvWuDv&}(Lpwf zMm;_{F}Z5q9t=t5Fb_-Vj9k0YwsLKa^Qqbs0b z%yYB!2cAV3ig290O*rhlTCIqN@{3B{5gQJFm1E(85w=K|AS*S5j(+EKz=DLa06!z5 zp_F`{c`rGLI0n)Qi{YC3rV;mT$bmEPG9D*ST?sJ-+SyS@JR09HlA1k09wwg8C2n-y zOG$al-uX>DNW6)W^^6&w1Q!r?}sTB%gE(ybT?o(pWB& zwl2a+e#EP>=U21sC*v&ssBK)aNbOJhZMb|oAe`LSsn}_guFW8P;sah(lj@GI&k&b8 z&6Y9wT#nfo; zB0{6GS&epP_N5;si&kf!W&7b)C>J!AS%<~DS{OKX=Q?_Soh`;MVj4*!p@3IRtvL9Q z1|nh_D{}h_a3TwsXAKQj@G|C6dF1%%^t4rLys1ztsr@p*#_%qR00*+uL}kw+PV*3_ z1d^*jq_D=~q840!XZCVE_1;-?6SYJ3MWaow`!)7zl+J|Xt$_#+dA6Rh-2rh9i&c4r z_N=5`Bs5vS)L_07anf9EYJH~Hs*P9U0B*!BF5T3aiH0|&>FrIyu1r8x9L$pFVZf@E z`O^1j#lL%EU(c}P|Ea~AQl+#~8NkTQ#arN#Rb7{=Q;WPyMeh=4N&OBfP{)n&1xmdhN8I!9Z9Z3dgjz1;qX_^T~B^^SbI2)aY$ zzrZuz#4x{icCTsgE`{dXSo|VfCl=*1jR#~r(Kk2LaOc@DE&DY&o~|6}_F`XXYF7_! zO~vPIl=_NHLGq4Xm{kj>H9O!8V!Tz##m#+CwU^J5(Wsxz_majp_3{e0laBU|wALDr zBG1H{>Vz4}UT~XV=*5Wx=7C>K6qD=k4tH~$Sfd@1WorZ`j_Cpyx*Ay>%DyJOBi!U` z7}d0mvi(N$TFOjHS7SD*E};+31#`p%o|na=4 zV2dBnDH=syFC(}rp4gTZ3=it~mz||OIEVdHN|LK))o$^mGV*EO9qJ(>urG+_-mC#> z+j{fn8hGo#FcF?!Ld#%bXt)YYGqqhF2x-v?{-*QkWwxbeM5K^Pd;QSpEKZ3r{=Fc3 zwel%z9EF3!4?hg~7~h!X3!t`29M{buHZUUc!ID;PTcEi0b+ebyOIyu>z#qwKPs|U&^EnJGO4r>99NlbGrV#i zcc1Cty@?uyp!`9S=4(>O@!`*Uo{KqH(8$v>SdI`EThJoj!=s{2-xQky4Tb_zN=;Js zhSO!7j)A*sPNJvj{COSx!4m58V@#52aze{AiQ3Go_z*j?27B>Y*KJ&K78u6b?y`34 zipweu1)gZ1Y+dm3utKo}HRtS%83JA^cS2ZTt~N}XT@$DFpxyDsQMz+H{jIC7HauwR zIP}Wc-LTd}BmmS8b>Ty#y!&>?2kc=EkbQ-2$j!gaQWY2l;b-6N6tb~Hth=gRZt;J) zcC0G~p(>O!_E{_am?_0v&RSIZfhE}}ERamPAKGcnqRcIi4$|7L@YD3-Tpa3LZ_`M! zM{33!*-}~!K$8qV_FoSoccKnQNqkcMfbScR1(%_mr2U*drv&8-TVB12yK%>w@G{K& zozD?6XyR)`B@)$v7z+O>{NmW;QJT*BDHU>PuZbw}$X5+` z*^3UFr2?XM2N*O)97{`T-HW_22q%|B<%~O?@xJOfpt4H97vooo*q)Qf$Gwyf<-|N8 zG@g?;?bAC>l{7}{^bWlX*-*`J!TpCaPp~D5OFlqxmEF2`V{1RRrR?!-LZVjpdVcqd zMn4luzU+=ct0&7NKi`iKs)@=su()E`w;ag=fMKT4N_5cBryZ2y*PT1w!X)#cc(a=Irl(S4kiaAKanuh<+mbfdw)=@@_U2=DBsBTn%BB% z{>g>|CtJMPV)D4~NH0%PNciyIkP^OaY)uS5z=~D=V#$kr>qN2oYLobrtu|SW8N6c< zB-zc9UMcyzpn8@2{!A($`SJM>|6h=0$R~H5RRVr;Jvbd~X=Nx91ES(Tas+ZQ?p0cO zBok;kKnFRHv=(10ku&D1htiVi0T`E5JhJg|e}<=~Q!o>(q~1o7&P?8Gd%g3LJK1lX z@Y4z^zI;`k*OAy) zfh3eY$^@)S2q_3qzF+Te8%`#&c5c(Gz$HDd;Vo+pbIP8cik zENcZag~)wgmq}nG^R_;5NFO5woh-RNT&ayHVM@UD<5U7zFKTRp{&1Xwlb3#>gB+a< zlj6YyM$GbbDxNX3=;ioCRv6t^nlUS*7wDiD7+SQB=8$Mg6L06|T_X76`>5Ud&*5$> zUA>5CsCgpd)+=xEZ{Sxktt-*7e09y0ESSBZNP0O~_SG9|LZ&UTZaZDjv{R|QHHH$; zU259wUyN6K?fi`+{E#dJ+~(CzKbiiwc^YtRFey}k%k0mfM7w)s)lT*vSL-IA|I*UtaYBf}#vmFQ zLZE0ICdm>{Y_+47lpsiiL@7`}sORA@j{*AX`&W9fA1s@XQx&*do8v2nZu$&+nLr*# zyoTB70P~p*HwVWnVu&X%jVE1f$^7%I+U%R4GyW3p$MGPl1yLM&bqrtJDj>4h8eOQD z#}iyoH$|du*yCB*LS*9pt4MPAXXEB9bfA7X74Q7l^g8Mk#GvbXOlj}*8%>Nv>h()A zQy%ic@Qbi<#lO(i_E{o2f{q;71tq;4HK(G5_d+c3E_*DuU~rayKu&z0MT+Vg9|lF3 z6Oi)5TRS(RW^VX*j(N4ww`-HQGM_yy5<#+2ER(WPfk!j~kE|v@f8B1{V*DzREkx`g z0YCQ0UT=0<0|fKM>@d!?E{Ng$yJG|D0Ub189 zck~Ew^SkYKwZ^{^=sNP5O7`$qQdBE2iq?#ESy`acx<#P6xQ3*QiwN%AOGJeCK?96h zcK$0t&=OEU!(klm2qs~aX_c{lRYFB!mCc*(ffC(g`V<-OVfv&zEw#tVlL=n8^uCC& z@S8{6lbryUMpwAoZb#+5PYFI4OdOlbwf7VC22O24Cl=(I2$rX_*hhe8H%hLdcQRnz)oB5_&Uq{a~Wc?YK>dn}Q& zpdUzzExR$z8tmz`5ri`!ABQmn?N$9fMzGJ#A{ceCNSN zLz`u|Y5a*IGnJZBfE)B&Az_V(Xvb#mH@y!0`-I&qP9Ytm2@ zhfi_W_2`{?F$XqPZ|j8$%e$iGfBL^Q%80|z$e50P-j z$#X&60$zN1y)EEGDtalux6Sx>!gb7J@gR&!USNzX#_Muh;hz{jeSbn9Vyy-H`m((S z|JtXiEp_n_3WV)-ipS1S0)PSxXV{$tOk$OHGVS_;GVx=g#1F9r#b%~f7DYcVvN>n- z=oUXxQvc)lfw@=I#87NmJe=gN<7jYD^~OIOxlwTHTjae;HRG!{FXK1HnA+azCyAa< zTCjrx*5`TRQ;xRSnO$j0(c`by6CH8+>hD=$F`$HKHktCwnCD3o1kJKo!mvyQP`8c-`&FZ}ZPWk^ z`rXk{z1v#!%>@fZu@~c_V`1SgP+Ce2NN&;3bkr&}FKuNDOo6BftRD8H?x?$*EhM1n zl9ZqEjoMbxL1#A;K{ur885Hy}&191_C(VJAW(pX`fJ}Dxg1@?1{MmsUaSVzyL5a(s zDw^r6(c|_tdagC*KFfBKHc@)Z%3HL7(aftXn@7BO-{${_5&t`Dt7gn9?IJ+-zKH=olusoV!Jurk?26 zBV7OSbaKOGc7+cfiibY9kh>AGaNkhYFG@;{ObvY;b^sfjKj*%8C{ZU&b>k^Vue6-C z;T?9t)&ZuIaY&SeN>ESPj|)t3mmEW^$Cd%b@t=8ZIS-=S|AUTY*`^JwHP_;OoSq*| z+pM1V%|^aST7IqhO&`MP&kyoIUOv|EWq^5;nL3K2yZv6K?|~$Kl!CKlT&?J)aX89a@SaQx*o9Awjn(a{L@7r z-#G6_dzdRDMsllQg-dD7f`JQ(^sHXJY&vyT{j0T@b26H$u>w^PP`Q#lIg^q(y`BbJ zQn!*WV8-CnANSM(LzeG+nVg-HN1DR7&s525;LHK)pL;1p<@JjgT#0)Sj@J|)ikz2- zM8qE?V(=P&=YuWBRC);lg9#PB(}zA?4{HsKpE5ME%EhC3D#oDu+VCX9LvY?*{Ts@4 z?lwdd@TD$@?Yb(yxCVsi_$X@$){XKg&EnND-kEWodgx9u)~O3&6h4vgJ@e@cnL2~x zIUK)salvrfq=v{$qrs>?SyI|KU;8EVK(w@`*wiaV?%W|PEz~(s!0VUTezW|AN@Es6 zOEn&1>+vy_v_}-cjO#OMMgp!+4VjweAg+C^W)vkqEl3yXH?NtNu$S@pjZ|AS^%pPS zd7Ca8FQGhdZjG(4A~h;rEipLXS0(XOM@vLBUc<#?6uMc_HIc1cZ{pF;X&IweDVe-rk07nQ$ei&6P_Mk6!W*Z~Zs{(kmpvSWJoyTr-#C7!p%+b9AF>No zyKKBQqM<=?-@Hb7ek{Tp zmYtvVL7reIIT19}+>cernEg?I`oa(9u73U8w=8sjDWgzmFL!R29w(S&U@VK56|$zL z8P#eaV?2s7J7|aiqb*?xS$||NLN(r>q(l!&^De_(qETJf%YJhHwI;-;^amKDkXsjr zN4i7aI^A*S#g30%%H>@lsbF$?lXds@mU`dsR>4&AYrh$AU)tz4`FdZ&WOW3si22ly zA_|{%vwY;rox3!je3Z8c5)$tZiT0O!)HF0+c`O@C@v4HiW=0H14%|UWqFyqiu0`JYzg4s?!MO~W zLT7iG@Ev1uw!GKSBgM~`WP_fwg0S+3og4?3n-u0N*xHJ_oF6P{tS)|h9$j3!h)Xn_ zT3}X8nq={|>x~7VEax0j>^gC|U%C1pCQcz;K1_Pf$ZxHwk^t zTS@f#__nZ8Rfk)7o$X_GYi=x=ozdp>r=<%M4hb2x+z!1cG?7iW3TXtz9CMT0W2U0f z`}L6$G|HqOFqAuOW95=Y?aybVrnFu2tRA6c!e&8`J8da4x<|aLWJ$NQd=B%^qwVg$ zdl%T8l~bL*Ankowdp%+KEBx3_#z_qL$0;bQ?`&6w_p_q!d%$G{^EB|neJW);T&GGd;}w^Tm@PN0UUzc|GbIZ8aI>h# z1=?AjE$>;%iuM|aSfxF4Hc`9fL^9YmcW@m6&x@69xsRKvcAh>xY;$)!ZV=sUB&x4g z=SY3;IlU{09__IG!wszY5fjc@v6-r4gldLdXHVfpr38jGE~X2}Nd$Q0-9<|E#dlO4 zO|rWLqv43Bl*LXFxa;;-1kxdu&e~>uT?{}u8XUKOytU18oudTzIc^!!;?kmL1psI> z1Bc?&6{l#4fD43J_`9WJhygrJm-ge`p!yDAUAz>{hlDJ2!VQhHEyL4r?3iz8 zr#r35`7lQu(i_w9GV>h=z#TU`lHabo;}!^-4QnkAYft{#$-2 zmcgi|64M>{;)f>h^6Gv)bo4FOUwXO#x_jvFEQg<^CGq}ncd}+lWih~*OQ6Y00+7p31#W@eL!oVby>y5x!Y5QKeY1%bvS9+x0 zu2H|qSl`4li+^wz5(BG)O9yXYkaaT@pbIaA#fX@blD^v5saWjcMqwFs!=rzO&!l@8 z8MNAkq-#glV>~wBzg%GU|M;pJ@{*F>o%rhQ;l_f9rCD=n>71|j3kng2Npzz3vO)s? zyYkwbi6$jw8)G%)ly!KoJ?~7OaSwV938YFNLZLT}& z>RfxDi+Z^LVmX+}mfJU2u5g}e%?dl1KzTlzc|ft!i+YM*U{lhXSZe`#tO}X^ndquc3S8(--6fOoBhr&;wUu`oU(r}3@-JKZdxzw%w0@YJaarWU|47V z_P;V6_va@CrvzQ$ZQ3C($t(PaaS}LhP-90Vr2|3WS~*H&yf3`_GS@!X6n-Ry*l+J< zYIVs>z-Fen9TZzn$I$z1ylJNi5)!+4mb*o;mI<(3q6~U!L!<0<24DCv-$5Ad2HSut z;HN!n5Pc@Y{rvy6@!ijGu-)IfL|wgiL2x5hFUwjzqD4eoEo!1f?{#&;3Zjce5D`Qt zx+S{RqqBPN5jEe5p)5&_SaDPsia~mF9%s0_>o!n2oJ58bx0*BY$M-EiSBd%4UqqW~SHk|xA~aZky}A!X zZwrp0amc|*-PB7i;K|L3M6}O~P(ZhT<@=aD3|1f9?IMnlNYzsNEh-6yS0B~|Uo9x$@zm|MS;&{mf8*uMLbycw=mW@Nyb7}&E z@cnE37iI~B*CUG8<6=ce30LubXyUXs_HLEv-D@!|3*l$SZ?d7KLOgD#f=h;ClD)1g z*-YyR+$-%6BEc%w{WV?rZDt7s(4~ZGc{Qb*I0_u5>ZMVtO!$X&mCKZBBC?NEWzq3l z^YJZ*fi_08&_ptEL~`@V8}f&%`8#o6gG3+w!*zS^hXmH03l@3~E|!)jwkIc3=7d?% zxhJFs545_>jayjMX>AmVSK=P<88Z1MI<-bjr;XUhI~g3Abx_;nJk$kCO;?$a;7D7# zg8HP0)nH3*$uJTnqx`WZUK|p+(`$-;5ns|+$u3yPppfSp?2Lu z)Xr00&`2F9zG}d79Pr2+P`b*;CY8zayc3xy}^$&`Y}K@ z?Nx)5_D`VU(89nW_R@DfWtk0*2E(xH*yRJak5h=DIbm8P*YIog$^rR6x-r2K!PIY~ zRZHZLoS*8ZJ9-LdS#yZ8*2cVZ2xMDUbDpnIdTL=gln0F%hYET`=UGJEn&dv#zLXw+ z7DNjh5UAFv3qJHl#BSN5iRCI;KA&sr8+LvX67wd4oBjj#1Cn1k7v*-5v=){rZ3*qA zi;g9XeIYz(6}2%=^dcf6$NR`!dqRhgbT$3$w4QS7PNo?!cSOR?L{s$W!V16acZKRc zJB&6&BELTGbgJ;+;^9;c-qpMcUxghaC3Xife_eRcF7+BZed8|@a)2xUzvgaR4q5fcYYCjPC#kHCruGEGa>~hXxob2 z=JjKaw{LY2m@!3(i{>h)k^;|iU#H709#SU7zS$LFB`_KucX|pYP7SJP*4r!yS3w7sjn?>hBx$F5(-O*KPJlKx;5` zv72*9Ix{#xTkmRA22O!(V$VzZ`MdKkNy7S9ZbWg>Xfd3>GLEkWK=zTJbZ(pi8?N{JJ&{f zQ%HsM$>5%5&|?VEo(wSCI&jJ+{-hWY(egBKtnCMB;D#eyM@peA=*QLUOS-bZhV%dCLL( zze)G{=N~U~EVV<9X8fY^Y*&P*b$}v1;)LQPs&NLJ`mvN!YhzAY`HE|7_jF2k?;6Rv zArWS7jQ?P$K^D$_AK};Vo^*TGzW2^w{?o-%p zZ+PZjd92C|m8xoYSU)#m2%I|xO+y?Z^yp(d>gyI-2ru#*Y0-DguS<_D|FCb#5lna? zexX6TBbS=Pj&1-hX%V!RoQ1lA;9Zs#TNn08XGC*9uOCi7HIuM{lLAj!#ERH;iPM6gF*J-iqak?m*sO(%Sz^8>|8?- zNMxIN{6zf-r`6-@;YH>E8n!RbQPC0=-fzOhZ_#^d!NaI0kF2rYMs^0{rf=v5&>$Lc z?mMugEmf>BYmCOMF+%9P7?%`vETVJahX2zZMBu4>=Icz5`8+(soghuof)7u(;}*!k z-1*qL?R(;%I|nKCOeuVa_muu7nDUbeLtAp~l#1=Y3421e({cw2-qWT7 zQZ>N?-#xj7s{WE@dxTz2Hm)#U70C8PPM9 z=De+(i`)1UEw9ZLN2+UCsn*|z9Om+#*IZe9zClRO&m;1pWcT;)tJ9ZO2ijVPNfEp2 z)jqQHQgI$pV8?hpIjRCG8y5f3ER+pb76wWJH6~%*=jjIhnG$y=?u~S4I^8340=_d} zGVm@S`s9@&3&Gvsi4v0QVb9L{^s5F{=ifn<*DTrCZnRj-j*9~KBj2`IpV{GYSCURX z{N@ZpLA7Sqb_C|!o2Nc?W#6m zAN88d(dTt*H@n>jA7>S0e;NfiBt2MoR?kuD@nBO1NK$+0`(D?)+iIN2&C@!ty>r2y za?F3Qa-M6QoorZ8h#O_VgH6Pw+TABV5Vl3w?XH*#K?u-6O9OPb&|nT$P_Xx*=fFKwkquXrqp1nqKN=7O3PGA>fHI>ofJ~bI^iZ+cCW6^A*Hj zeKFL!-ybWlKS80}53hazl$zUrUQ0Qato%8qy7_cwux-WkwaigIcVUBufDB^CY2vv{^2U;Nxhb_KnA38)S^OHvNP|MQoo(R7tC-6AhyK%UXJ z$BJU-sU)=VK%^K<0CA7}6g1Z$y{lEE@{y8EPU|wb;%Seg-sZLVFnB46R3)j@ScM(D zImAglOs)s#YtdG`t-HLe#(GKU?3(>x%zeYh7iMef;}9Wb`=HEvfV7P_QHWb@FrC)D zOKsK5oP47vLr#0-=KSJsQV@#rF>{40fD_Nn4~X;43x_k$84v`ZKc}Eq)wcdSJ8qOy zgo2b>Zq=l#D>eG3$XUR!*LgSzREG#ES2qWc&{?P)Bnv0c*I3lrA`U!t=!YEsG!--l*S zY%4S-V~!~S+;qovcpdS(ed{I#77*5AH$Qdy1RVM$Kb+1lE37$##^}GvA%*u?Uvh*5 zWkKzuQ^H%0V9Fb68H4i2tBZY18a3cqF&Ha%Yx{ zkm39eFVI_|{iSSbi~m57(DIPtrs2b~8&bYX)b~0G(lxor;~_pVCfWKXG$E!TfBfAk4)tXdQmP7FPtbyy4Z@|>5{tJ0J&b$ zrF=iX`@m1V`D7&~S%M;4k_*GZBkM^wLB}EyIY?Lgmiwdb$lk0XFY?!tYsF>An*TaJ z=lXuDg~ILMj?bnCo|_lpGI-hi#4?~?-u5cSU&tX}m+k(y=h0wSXl=}NYxnj$M-LB3IO*hsGVn9`*)`-1i^SDEoEZw1$?Jd<362X0Mr|n zt2^4U33&Je=hCBklpmmm#iY%3nPXe&&O1}qN`__I>_DNAgK`hcdIwLLIg2!Q34%CH z?QYUAIDI7-rmAIZ_27eTb618T;Q1!uuF^h(#9Zk{&C}?lyg&bvL8^#m5!DdAMV#vH zUHk128Vz3{PL2f3Q;BjOaA@{~J1s@|fLUpaIQ#t~pOWfeGCARi&9PrIDX=YldY*pw zr)yFpyJC$%>fF{a^Pt3THLMkh!=oa3Rwwvd%Q-hXhXq3zX>5D;cwF6w{W3>A3Tuh# z&X+`QBk_V^+JrJkgHgt=nRj6^^*#BSJw13?!(hcIvlr7=+gis(cvZJNG*N z<0iR3wYiN9B@K$VPUZBWJD&N~W)U9*NMo0G(8Qw=9C~<(#2*4_H$nz(%nUMq=LtmK z3ki~Js|$|@NU@xI!#VZS@+g#ye@8qQEI>BrxfJ_I1zOPCuE-kTr^Pje;HsvK zuoR_fXAA6VMfrXh?N6^UzHdJJW%=i~s(Tf=gFO`?Y@B1T8v5bff1C_>T>)&K$X|On z8j@ZpksDxKnY+(|9n8ID5qvV!(?R5?QAtQ}>y)0998Q8apQcOzn`O1X75*dcSR`(FKPHZ;v2ULaOJ3lnZ zNJwCHK&H|VK#V)16E}^jpmWFfQle~MiFbU6L~s4p1E19Tf~H@b1~v*YFIbejEF~J^ zP}`7X^{XSZS7S=3-v5jOC$3>hKO`2luJfSJ75?~XcNx4QCyk1-GCgnGBJ-(Al)oS<9TEcyu?V9R66}B+jnL4R3>7)O}c$FW!1rPGi;cP@jmnK zAu-K_>t#*Z&e3H~fxf}ja|giejG|^iBqKO)Bn3zQK{=6O@r&)h2u`R?NsY4i;`?f! zxmt32voG_k#3#S)1>i=s(A`L=swPC^3oA z)K_J0`E`{$v1D2VRp5S33$OmsMtlGj3=t>Zkf;8N@vXVg+CuQ+g^xPi-@5>4Js)r-Q#*X%Q+3mNq)EfJI#jUwvs^N@B0UW>zB>JjMm25 z-R#ioWkd|tQz}g6mpM~&!X`eS>xm~Z;f_(h`Hx2sO^e@jSkTQeMAY93OlUtdDsI+8`n-(}m47<9=t246TL`y> zQ}OC4=eWw?ftLOUjPL9f+hz+$kp0Nk=Q>~wWBd~{pK9Cc2=#1_ysa^ax(;Tj7Pyam z%d&riU!6R;%ayyqrK-9G+3w|-D;Vo$x`(gUE73s#tV+Pmt)p@@@{=ntVm5BOBf=4rmmT{kJ zX;hU{u_faUN^aHhNzXev;%<16 zf(|0$nQt{28Enh}?Y4QOYj_omv-@#ClaW?p55)sjS@vjpz7C{TWy#j1L!S-CPZ*_h zifOB>r5#^AYawLGGM)qqTm}D8-R;`G=gjon1j0>wt~o8>+5$`J5RGLOR48`~L)1?h zjwt8f6ACJ=UoO%$eq?PR^M!j_-R7>s#$0+Qu7*x#>@*7~W}>`M*tx20r5s7_to#cq zpwkmR;eJ>GwT+>>?wpz_#Cz3{NWb9=>X-a;smdAAJW`I_jPF_Dw=N;suH^FTYfPof z5}$&pnkPN_)^?cbST4kVVf6IaQx_!j1uaQ@0m6W%<|@Wi5kf2e@AjV72^V@<%e9B$ z?oe1&qJQHaQ3#Wz!aBtYog-PC-UKUv>`hvXk;J0#*jc)^ASKU{j$aiYZsO1Ga;Knr z1dxS77w@m32lm?0r!`E*5($Qzm%g%($AZU`FQY>bGQTdW%}|1P9&$gUAKti$_WM|k z8+(+g+UFf7KabxUE}IdfN3AgmFjv<%jC`r%1|liA;vSK$1*MC2jH*Wa<~7BcD2S|x zQyq{5t;2fHVB3_DV6itY+{B^|(T@X}WzmxkE%BYv5k)1XZ{7W02Y!N_M$XOn4jcIM zvHIw-9V;lycil`R;I%j^>gTf0=Su*GB$Tb;Id~!_vW2MmK`_T^MRKfDMlXa1bn@w` z$}T5`O-!;6mrf?2(3Q|Se=#M9S}!|!L!2@BTzy57q%8fC6}_x?8zv=I(pGan4h<5%VO*EpCZ}miMNi!Ga3|`X}T2PfX9&h*t3W&hu z<#e&x7#SJmuwgnYC@2K@3$uscly=Od<=`KShy2Fqxy_VYf@Hv(s59d>U|Pz9zsNfp z-HpkmwP3GBG{27=N`DS-{t$j{OcvY-i`~*H(<#pn`2Z?t zfMNHt*iywyhS8DoSt|$*odp{ibpk&dMLcFP(5QInyN-OhPc0hKjaw Jg_33X{{hI9h)w_i literal 0 HcmV?d00001 diff --git a/_sources/AUTHORS.md b/_sources/AUTHORS.md new file mode 100644 index 0000000..93c5f27 --- /dev/null +++ b/_sources/AUTHORS.md @@ -0,0 +1,7 @@ +Contributors +============ + +* Thibaud Coroller +* Mélodie Monod +* Peter Krusche +* Qian Cao diff --git a/_sources/CHANGELOG.md b/_sources/CHANGELOG.md new file mode 100644 index 0000000..72d9e28 --- /dev/null +++ b/_sources/CHANGELOG.md @@ -0,0 +1,15 @@ +Change log +========= + +Version 0.1.1 +------------- + +Added metrics classes (AUC, Cindex, Brier score) +Added Kaplan Meier +Created Sphinx documentation +Added R benchmark comparison + +Version 0.1.0 +------------- + +Initial release of CoxPH and Weibull classes. diff --git a/_sources/README-copy.md b/_sources/README-copy.md new file mode 100644 index 0000000..4fb5100 --- /dev/null +++ b/_sources/README-copy.md @@ -0,0 +1,214 @@ +# Survival analysis made easy + +> :warning: :construction: **We are still working on the publication of this project and appreciate your patience until everything will be ready.** :construction: :warning: + +`TorchSurv` is a Python package that serves as a companion tool to perform deep survival modeling within the `PyTorch` environment. Unlike existing libraries that impose specific parametric forms on users, `TorchSurv` enables the use of custom `PyTorch`-based deep survival models. With its lightweight design, minimal input requirements, full `PyTorch` backend, and freedom from restrictive survival model parameterizations, `TorchSurv` facilitates efficient survival model implementation, particularly beneficial for high-dimensional input data scenarios. + +# TL;DR + +Our idea is to **keep things simple**. You are free to use any model architecture you want! Our code has 100% PyTorch backend and behaves like any other functions (losses or metrics) you may be familiar with. + +Our functions are designed to support you, not to make you jump through hoops. Here's a pseudo code illustrating how easy is it to use `TorchSurv` to fit and evaluate a Cox proportional hazards model: + +```python +from torchsurv.loss import cox +from torchsurv.metrics.cindex import ConcordanceIndex + +# Pseudo training loop +for data in dataloader: + x, event, time = data + estimate = model(x) # shape = torch.Size([64, 1]), if batch size is 64 + loss = cox.neg_partial_log_likelihood(estimate, event, time) + loss.backward() # native torch backend + +# You can check model performance using our evaluation metrics, e.g, the concordance index with +cindex = ConcordanceIndex() +cindex(estimate, event, time) + +# You can obtain the confidence interval of the c-index +cindex.confidence_interval() + +# You can test whether the observed c-index is greater than 0.5 (random estimator) +cindex.p_value(method="noether", alternative="two_sided") + +# You can even compare the metrics between two models (e.g., vs. model B) +cindex.compare(cindexB) +``` + +# Installation + +First, install the package: + +```bash +pip install torchsurv +``` + +or for local installation (from package root) + +```bash +pip install -e . +``` + +If you use Conda, you can install requirements into a conda environment +using the `environment.yml` file included in the `dev` subfolder of the source repository. + +# Getting started + +We recommend starting with the [introductory guide](https://opensource.nibr.com/torchsurv/notebooks/introduction.html), where you'll find an overview of the package's functionalities. + +## Survival data + +We simulate a random batch of 64 subjects. Each subject is associated with a binary event status (= `True` if event occured), a time-to-event or censoring and 16 covariates. + +```python +>>> import torch +>>> _ = torch.manual_seed(52) +>>> n = 64 +>>> x = torch.randn((n, 16)) +>>> event = torch.randint(low=0, high=2, size=(n,)).bool() +>>> time = torch.randint(low=1, high=100, size=(n,)).float() +``` + +## Cox proportional hazards model + +The user is expected to have defined a model that outputs the estimated *log relative hazard* for each subject. For illustrative purposes, we define a simple linear model that generates a linear combination of the covariates. + +```python +>>> from torch import nn +>>> model_cox = nn.Sequential(nn.Linear(16, 1)) +>>> log_hz = model_cox(x) +>>> print(log_hz.shape) +torch.Size([64, 1]) +``` + +Given the estimated log relative hazard and the survival data, we calculate the current loss for the batch with: + +```python +>>> from torchsurv.loss.cox import neg_partial_log_likelihood +>>> loss = neg_partial_log_likelihood(log_hz, event, time) +>>> print(loss) +tensor(4.1723, grad_fn=) +``` + +We obtain the concordance index for this batch with: + +```python +>>> from torchsurv.metrics.cindex import ConcordanceIndex +>>> with torch.no_grad(): log_hz = model_cox(x) +>>> cindex = ConcordanceIndex() +>>> print(cindex(log_hz, event, time)) +tensor(0.4872) +``` + +We obtain the Area Under the Receiver Operating Characteristic Curve (AUC) at a new time t = 50 for this batch with: + +```python +>>> from torchsurv.metrics.auc import Auc +>>> new_time = torch.tensor(50.) +>>> auc = Auc() +>>> print(auc(log_hz, event, time, new_time=50)) +tensor([0.4737]) +``` + +## Weibull accelerated failure time (AFT) model + +The user is expected to have defined a model that outputs for each subject the estimated *log scale* and optionally the *log shape* of the Weibull distribution that the event density follows. In case the model has a single output, `TorchSurv` assume that the shape is equal to 1, resulting in the event density to be an exponential distribution solely parametrized by the scale. + +For illustrative purposes, we define a simple linear model that estimate two linear combinations of the covariates (log scale and log shape parameters). + +```python +>>> from torch import nn +>>> model_weibull = nn.Sequential(nn.Linear(16, 2)) +>>> log_params = model_weibull(x) +>>> print(log_params.shape) +torch.Size([64, 2]) +``` + +Given the estimated log scale and log shape and the survival data, we calculate the current loss for the batch with: + +```python +>>> from torchsurv.loss.weibull import neg_log_likelihood +>>> loss = neg_log_likelihood(log_params, event, time) +>>> print(loss) +tensor(82931.5078, grad_fn=) +``` + +To evaluate the predictive performance of the model, we calculate subject-specific log hazard and survival function evaluated at all times with: + +```python +>>> from torchsurv.loss.weibull import log_hazard +>>> from torchsurv.loss.weibull import survival_function +>>> with torch.no_grad(): log_params = model_weibull(x) +>>> log_hz = log_hazard(log_params, time) +>>> print(log_hz.shape) +torch.Size([64, 64]) +>>> surv = survival_function(log_params, time) +>>> print(surv.shape) +torch.Size([64, 64]) +``` + +We obtain the concordance index for this batch with: + +```python +>>> from torchsurv.metrics.cindex import ConcordanceIndex +>>> cindex = ConcordanceIndex() +>>> print(cindex(log_hz, event, time)) +tensor(0.4062) +``` + +We obtain the AUC at a new time t = 50 for this batch with: + +```python +>>> from torchsurv.metrics.auc import Auc +>>> new_time = torch.tensor(50.) +>>> log_hz_t = log_hazard(log_params, time=new_time) +>>> auc = Auc() +>>> print(auc(log_hz_t, event, time, new_time=new_time)) +tensor([0.3509]) +``` + +We obtain the integrated brier-score with: + +```python +>>> from torchsurv.metrics.brier_score import BrierScore +>>> brier_score = BrierScore() +>>> bs = brier_score(surv, event, time) +>>> print(brier_score.integral()) +tensor(0.4447) +``` + +# Related Packages + +The table below compares the functionalities of `TorchSurv` with those of +[auton-survival](https://proceedings.mlr.press/v182/nagpal22a.html), +[pycox](http://jmlr.org/papers/v20/18-424.html), +[torchlife](https://sachinruk.github.io/torchlife//index.html), +[scikit-survival](https://jmlr.org/papers/v21/20-729.html), +[lifelines](https://joss.theoj.org/papers/10.21105/joss.01317), and +[deepsurv](https://bmcmedresmethodol.biomedcentral.com/articles/10.1186/s12874-018-0482-1). +While several libraries offer survival modelling functionalities, no existing library provides the flexibility to use a custom PyTorch-based neural networks to define the survival model parameters. + +The outputs of both the log-likelihood functions and the evaluation metrics functions have undergone thorough comparison with benchmarks generated using Python packages and R packages. The comparisons are summarised in the [Related packages summary](https://opensource.nibr.com/torchsurv/benchmarks.html). + +![Survival analysis libraries in Python](source/table_python_benchmark.png) +![Survival analysis libraries in Python](source/table_python_benchmark_legend.png) + +# Contributing + +We value contributions from the community to enhance and improve this project. If you'd like to contribute, please consider the following: + +1. Create Issues: If you encounter bugs, have feature requests, or want to suggest improvements, please create an [issue](https://github.com/Novartis/torchsurv/issues) in the GitHub repository. Make sure to provide detailed information about the problem, including code for reproducibility, or enhancement you're proposing. + +2. Fork and Pull Requests: If you're willing to address an existing issue or contribute a new feature, fork the repository, create a new branch, make your changes, and then submit a pull request. Please ensure your code follows our coding conventions and include tests for any new functionality. + +By contributing to this project, you agree to license your contributions under the same license as this project. + +# Contact + +If you have any questions, suggestions, or feedback, feel free to reach out to [us](https://opensource.nibr.com/torchsurv/AUTHORS.html). + +# Cite + +If you use this project in academic work or publications, we appreciate citing it using the following BibTeX entry: + +TEMPORARY PLACEHOLDER. diff --git a/_sources/_autosummary/torchsurv.loss.cox.rst b/_sources/_autosummary/torchsurv.loss.cox.rst new file mode 100644 index 0000000..d099718 --- /dev/null +++ b/_sources/_autosummary/torchsurv.loss.cox.rst @@ -0,0 +1,29 @@ +torchsurv.loss.cox +================== + +.. automodule:: torchsurv.loss.cox + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + neg_partial_log_likelihood + + + + + + + + + + + + + diff --git a/_sources/_autosummary/torchsurv.loss.momentum.rst b/_sources/_autosummary/torchsurv.loss.momentum.rst new file mode 100644 index 0000000..a98aab7 --- /dev/null +++ b/_sources/_autosummary/torchsurv.loss.momentum.rst @@ -0,0 +1,29 @@ +torchsurv.loss.momentum +======================= + +.. automodule:: torchsurv.loss.momentum + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + + Momentum + + + + + + + + + diff --git a/_sources/_autosummary/torchsurv.loss.weibull.rst b/_sources/_autosummary/torchsurv.loss.weibull.rst new file mode 100644 index 0000000..e758039 --- /dev/null +++ b/_sources/_autosummary/torchsurv.loss.weibull.rst @@ -0,0 +1,32 @@ +torchsurv.loss.weibull +====================== + +.. automodule:: torchsurv.loss.weibull + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + cumulative_hazard + log_hazard + neg_log_likelihood + survival_function + + + + + + + + + + + + + diff --git a/_sources/_autosummary/torchsurv.metrics.auc.rst b/_sources/_autosummary/torchsurv.metrics.auc.rst new file mode 100644 index 0000000..3b9277f --- /dev/null +++ b/_sources/_autosummary/torchsurv.metrics.auc.rst @@ -0,0 +1,29 @@ +torchsurv.metrics.auc +===================== + +.. automodule:: torchsurv.metrics.auc + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + + Auc + + + + + + + + + diff --git a/_sources/_autosummary/torchsurv.metrics.brier_score.rst b/_sources/_autosummary/torchsurv.metrics.brier_score.rst new file mode 100644 index 0000000..564aafa --- /dev/null +++ b/_sources/_autosummary/torchsurv.metrics.brier_score.rst @@ -0,0 +1,29 @@ +torchsurv.metrics.brier\_score +============================== + +.. automodule:: torchsurv.metrics.brier_score + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + + BrierScore + + + + + + + + + diff --git a/_sources/_autosummary/torchsurv.metrics.cindex.rst b/_sources/_autosummary/torchsurv.metrics.cindex.rst new file mode 100644 index 0000000..13b5cad --- /dev/null +++ b/_sources/_autosummary/torchsurv.metrics.cindex.rst @@ -0,0 +1,29 @@ +torchsurv.metrics.cindex +======================== + +.. automodule:: torchsurv.metrics.cindex + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + + ConcordanceIndex + + + + + + + + + diff --git a/_sources/_autosummary/torchsurv.stats.ipcw.rst b/_sources/_autosummary/torchsurv.stats.ipcw.rst new file mode 100644 index 0000000..d101cbc --- /dev/null +++ b/_sources/_autosummary/torchsurv.stats.ipcw.rst @@ -0,0 +1,29 @@ +torchsurv.stats.ipcw +==================== + +.. automodule:: torchsurv.stats.ipcw + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + get_ipcw + + + + + + + + + + + + + diff --git a/_sources/_autosummary/torchsurv.stats.kaplan_meier.rst b/_sources/_autosummary/torchsurv.stats.kaplan_meier.rst new file mode 100644 index 0000000..8be741b --- /dev/null +++ b/_sources/_autosummary/torchsurv.stats.kaplan_meier.rst @@ -0,0 +1,29 @@ +torchsurv.stats.kaplan\_meier +============================= + +.. automodule:: torchsurv.stats.kaplan_meier + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + + KaplanMeierEstimator + + + + + + + + + diff --git a/_sources/benchmarks.rst b/_sources/benchmarks.rst new file mode 100644 index 0000000..5787f6b --- /dev/null +++ b/_sources/benchmarks.rst @@ -0,0 +1,2 @@ +.. include:: ../tests/README.md + :parser: myst_parser.sphinx_ \ No newline at end of file diff --git a/_sources/devnotes.md b/_sources/devnotes.md new file mode 100644 index 0000000..a696f2e --- /dev/null +++ b/_sources/devnotes.md @@ -0,0 +1,102 @@ +# Development notes + +## Set up a development environment via conda + +To use conda to install all package dependencies locally and start development, +run the following commands in the root directory of the repository. + +Create the environment: + +```bash +conda create -y -n torchsurv python=3.10 +conda env update -n torchsurv -f dev/environment.yml +``` + +Activate the environment: + +```bash +conda activate torchsurv +``` + +## Test and develop the package + +To run all unit tests either use `dev/run-unittests.sh` or run the +following command from the repository root directory: + +```bash +PYTHONPATH=src python -m unittest discover -s tests -v +``` + +To run other scripts within the repo, you can run the following +from the top level directory of the repository clone, and then run +scripts from there that import `TorchSurv`. Alternatively you may give +an absolute path to the source directory. + +```bash +export PYTHONPATH=src +``` + +To test building the package, run: + +```bash +python -m build # builds the package as a tarball -> dist +``` + +To get a local installation for testing e.g. other tools that depend on `TorchSurv` +with a local development version of the code: + +```bash +pip install -e # install for development ("editable") +``` + +## Installing a local package build + +To install a specific package build e.g. into a local conda environment / virtualenv: + +```bash +python -mbuild +# ... activate virtualenv +# install the first tarball in dist +pip install "$(set -- dist/*.tar.gz; echo "$1")" +``` + +## Code formatting + +We use `black` for code formatting. To format the code, run the following command: + +```bash +./dev/codeqc.sh +``` + +Code should be properly formatted before merging with `dev` or `main`. + +## Build and test the documentation locally + +We use Sphinx to build the documentation. To build and view the documentation, +run the following script: + +```bash +# just run ./dev/build-docs.sh to build but not start a webserver +./dev/build-docs.sh serve +``` + +You can then access the documentation at `http://localhost:8000` in your web browser. + +When updating toctrees / adding content you may need to clean your local documentation +build: + +```bash +cd docs +make clean +``` + +To build a single PDF of the documentation, run: + +```bash +cd docs +make latexpdf LATEXMKOPTS="-silent -f" +``` + +There are a few errors in the PDF build due to layout issues, +but the PDF can still be used to summarize the package in a single +file. diff --git a/_sources/index.rst b/_sources/index.rst new file mode 100644 index 0000000..20c62a9 --- /dev/null +++ b/_sources/index.rst @@ -0,0 +1,37 @@ +Welcome to TorchSurv's documentation! +===================================== + +.. include:: README-copy.md + :parser: myst_parser.sphinx_ + +.. toctree:: + :maxdepth: 2 + :caption: API: + + loss + metrics + stats + +.. toctree:: + :maxdepth: 2 + :caption: Tutorials: + + notebooks/introduction + notebooks/momentum + +.. toctree:: + :maxdepth: 2 + :caption: Other: + + CHANGELOG + AUTHORS + devnotes + benchmarks + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/_sources/loss.rst b/_sources/loss.rst new file mode 100644 index 0000000..8d58c99 --- /dev/null +++ b/_sources/loss.rst @@ -0,0 +1,9 @@ +Loss +============= + +.. autosummary:: + :toctree: _autosummary + + torchsurv.loss.cox + torchsurv.loss.momentum + torchsurv.loss.weibull diff --git a/_sources/metrics.rst b/_sources/metrics.rst new file mode 100644 index 0000000..84ab6c6 --- /dev/null +++ b/_sources/metrics.rst @@ -0,0 +1,9 @@ +Metrics +======= + +.. autosummary:: + :toctree: _autosummary + + torchsurv.metrics.auc + torchsurv.metrics.cindex + torchsurv.metrics.brier_score diff --git a/_sources/notebooks/introduction.ipynb b/_sources/notebooks/introduction.ipynb new file mode 100644 index 0000000..61e7d77 --- /dev/null +++ b/_sources/notebooks/introduction.ipynb @@ -0,0 +1,1170 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ca2213c2-6abc-4340-853a-7ab1e06e68d3", + "metadata": {}, + "source": [ + "# Getting started\n", + "\n", + "In this notebook, we use `TorchSurv` to train a model that predicts relative risk of breast cancer recurrence. We use a public data set, the [German Breast Cancer Study Group 2 (GBSG2)](https://paperswithcode.com/dataset/gbsg2). After training the model, we evaluate the predictive performance using evaluation metrics implemented in `TorchSurv`.\n", + "\n", + "\n", + "We first load the dataset using the package [lifelines](https://lifelines.readthedocs.io/en/latest/). The GBSG2 dataset contains features and recurrence free survival time (in days) for 686 women undergoing hormonal treatment. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "013dbcb4", + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2601dd00-7bd2-49d5-9bdf-a84205872890", + "metadata": {}, + "outputs": [], + "source": [ + "import lifelines\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import torch\n", + "from torch.utils.data import DataLoader\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "# Our package\n", + "from torchsurv.loss.cox import neg_partial_log_likelihood\n", + "from torchsurv.loss.weibull import neg_log_likelihood, log_hazard, survival_function\n", + "from torchsurv.metrics.brier_score import BrierScore\n", + "from torchsurv.metrics.cindex import ConcordanceIndex\n", + "from torchsurv.metrics.auc import Auc\n", + "\n", + "# local helpers\n", + "from helpers_introduction import Custom_dataset, plot_losses" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d7a98ea2-100f-43ef-8c45-c786ddcd313e", + "metadata": {}, + "outputs": [], + "source": [ + "# Constant parameters accross models\n", + "EPOCHS = 100\n", + "BATCH_SIZE = 32\n", + "LEARNING_RATE = 1e-2" + ] + }, + { + "cell_type": "markdown", + "id": "38dd4c6e-2934-44f5-88fa-1d9d02032fc3", + "metadata": {}, + "source": [ + "## Dataset overview" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1df49737-dc02-4d6b-acd7-d03b79f18a29", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
horThagemenostattsizetgradepnodesprogrecestrectimecens
0no70Post21II3486618141
1yes56Post12II7617720181
2yes58Post35II9522717121
3yes59Post17II4602918071
4no73Post35II126657721
\n", + "
" + ], + "text/plain": [ + " horTh age menostat tsize tgrade pnodes progrec estrec time cens\n", + "0 no 70 Post 21 II 3 48 66 1814 1\n", + "1 yes 56 Post 12 II 7 61 77 2018 1\n", + "2 yes 58 Post 35 II 9 52 271 712 1\n", + "3 yes 59 Post 17 II 4 60 29 1807 1\n", + "4 no 73 Post 35 II 1 26 65 772 1" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load GBSG2 dataset\n", + "df = lifelines.datasets.load_gbsg2()\n", + "df.head(5)" + ] + }, + { + "cell_type": "markdown", + "id": "8f23ce41-c0eb-4c30-83f3-2a2d45dcf097", + "metadata": {}, + "source": [ + "The dataset contains the categorical features: \n", + "\n", + "- `horTh`: hormonal therapy, a factor at two levels (yes and no).\n", + "- `age`: age of the patients in years.\n", + "- `menostat`: menopausal status, a factor at two levels pre (premenopausal) and post (postmenopausal).\n", + "- `tsize`: tumor size (in mm).\n", + "- `tgrade`: tumor grade, a ordered factor at levels I < II < III.\n", + "- `pnodes`: number of positive nodes.\n", + "- `progrec`: progesterone receptor (in fmol).\n", + "- `estrec`: estrogen receptor (in fmol).\n", + "\n", + "Additionally, it contains our survival targets:\n", + "\n", + "- `time`: recurrence free survival time (in days).\n", + "- `cens`: censoring indicator (0- censored, 1- event).\n", + "\n", + "One common approach is to use a [one hot encoder](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html) to convert them into numerical features. We then seperate the dataframes into features `X` and labels `y`. The following code also partitions the labels and features into training and testing cohorts." + ] + }, + { + "cell_type": "markdown", + "id": "34132fea-daa6-46a5-8429-16df73886a51", + "metadata": {}, + "source": [ + "## Data preparation" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7a5fd9ef-2643-46b7-9c98-05ff919026ea", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
agetsizepnodesprogrecestrectimecenshorTh_yesmenostat_Pretgrade_IItgrade_III
070.021.03.048.066.01814.01.00.00.01.00.0
156.012.07.061.077.02018.01.01.00.01.00.0
258.035.09.052.0271.0712.01.01.00.01.00.0
359.017.04.060.029.01807.01.01.00.01.00.0
473.035.01.026.065.0772.01.00.00.01.00.0
\n", + "
" + ], + "text/plain": [ + " age tsize pnodes progrec estrec time cens horTh_yes \\\n", + "0 70.0 21.0 3.0 48.0 66.0 1814.0 1.0 0.0 \n", + "1 56.0 12.0 7.0 61.0 77.0 2018.0 1.0 1.0 \n", + "2 58.0 35.0 9.0 52.0 271.0 712.0 1.0 1.0 \n", + "3 59.0 17.0 4.0 60.0 29.0 1807.0 1.0 1.0 \n", + "4 73.0 35.0 1.0 26.0 65.0 772.0 1.0 0.0 \n", + "\n", + " menostat_Pre tgrade_II tgrade_III \n", + "0 0.0 1.0 0.0 \n", + "1 0.0 1.0 0.0 \n", + "2 0.0 1.0 0.0 \n", + "3 0.0 1.0 0.0 \n", + "4 0.0 1.0 0.0 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_onehot = pd.get_dummies(df, columns=[\"horTh\", \"menostat\", \"tgrade\"]).astype(\"float\")\n", + "df_onehot.drop(\n", + " [\"horTh_no\", \"menostat_Post\", \"tgrade_I\"],\n", + " axis=1,\n", + " inplace=True,\n", + ")\n", + "df_onehot.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0f8b7f3b-fb2a-4d74-ac99-8f6390b2f5eb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(Sample size) Training:336 | Validation:144 |Testing:206\n" + ] + } + ], + "source": [ + "df_train, df_test = train_test_split(df_onehot, test_size=0.3)\n", + "df_train, df_val = train_test_split(df_train, test_size=0.3)\n", + "print(\n", + " f\"(Sample size) Training:{len(df_train)} | Validation:{len(df_val)} |Testing:{len(df_test)}\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "00ad6603-0dff-4991-992a-081ba9a4fafa", + "metadata": {}, + "source": [ + "Let us setup the dataloaders for training, validation and testing." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "326c03fc-91f1-493b-a9ba-820de17fb2f8", + "metadata": {}, + "outputs": [], + "source": [ + "# Dataloader\n", + "dataloader_train = DataLoader(\n", + " Custom_dataset(df_train), batch_size=BATCH_SIZE, shuffle=True\n", + ")\n", + "dataloader_val = DataLoader(\n", + " Custom_dataset(df_val), batch_size=len(df_val), shuffle=False\n", + ")\n", + "dataloader_test = DataLoader(\n", + " Custom_dataset(df_test), batch_size=len(df_test), shuffle=False\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "570386fb-f0ea-4061-bae2-11b274e7f851", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x (shape) = torch.Size([32, 9])\n", + "num_features = 9\n", + "event = torch.Size([32])\n", + "time = torch.Size([32])\n" + ] + } + ], + "source": [ + "# Sanity check\n", + "x, (event, time) = next(iter(dataloader_train))\n", + "num_features = x.size(1)\n", + "\n", + "print(f\"x (shape) = {x.shape}\")\n", + "print(f\"num_features = {num_features}\")\n", + "print(f\"event = {event.shape}\")\n", + "print(f\"time = {time.shape}\")" + ] + }, + { + "cell_type": "markdown", + "id": "6b53d40d-d2c4-4dd7-bb85-97d4e946c356", + "metadata": {}, + "source": [ + "## Section 1: Cox proportional hazards model\n", + "\n", + "In this section, we use the [Cox proportional hazards model](../_autosummary/torchsurv.loss.cox.html). Given covariate $x_{i}$, the hazard of patient $i$ has the form\n", + "$$\n", + "\\lambda (t|x_{i}) =\\lambda_{0}(t)\\theta(x_{i})\n", + "$$\n", + "The baseline hazard $\\lambda_{0}(t)$ is identical across subjects (i.e., has no dependency on $i$). The subject-specific risk of event occurence is captured through the relative hazards $\\{\\theta(x_{i})\\}_{i = 1, \\dots, N}$.\n", + "\n", + "We train a multi-layer perceptron (MLP) to model the subject-specific risk of event occurence, i.e., the log relative hazards $\\log\\theta(x_{i})$. Patients with lower recurrence time are assumed to have higher risk of event. " + ] + }, + { + "cell_type": "markdown", + "id": "46343fe0", + "metadata": {}, + "source": [ + "### Section 1.1: MLP model for log relative hazards" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9c2bd89a-c90a-4795-aab5-b5c21906a0de", + "metadata": {}, + "outputs": [], + "source": [ + "cox_model = torch.nn.Sequential(\n", + " torch.nn.BatchNorm1d(num_features), # Batch normalization\n", + " torch.nn.Linear(num_features, 32),\n", + " torch.nn.ReLU(),\n", + " torch.nn.Dropout(),\n", + " torch.nn.Linear(32, 64),\n", + " torch.nn.ReLU(),\n", + " torch.nn.Dropout(),\n", + " torch.nn.Linear(64, 1), # Estimating log hazards for Cox models\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "97c90244", + "metadata": {}, + "source": [ + "### Section 1.2: MLP model training" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d7889dc1-1cfa-424e-a586-481cbc789581", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch: 000, Training loss: 30.68\n", + "Epoch: 010, Training loss: 29.77\n", + "Epoch: 020, Training loss: 28.20\n", + "Epoch: 030, Training loss: 27.67\n", + "Epoch: 040, Training loss: 28.83\n", + "Epoch: 050, Training loss: 28.03\n", + "Epoch: 060, Training loss: 28.23\n", + "Epoch: 070, Training loss: 28.19\n", + "Epoch: 080, Training loss: 27.64\n", + "Epoch: 090, Training loss: 27.26\n" + ] + } + ], + "source": [ + "torch.manual_seed(42)\n", + "\n", + "# Init optimizer for Cox\n", + "optimizer = torch.optim.Adam(cox_model.parameters(), lr=LEARNING_RATE)\n", + "\n", + "# Initiate empty list to store the loss on the train and validation sets\n", + "train_losses = []\n", + "val_losses = []\n", + "\n", + "# training loop\n", + "for epoch in range(EPOCHS):\n", + " epoch_loss = torch.tensor(0.0)\n", + " for i, batch in enumerate(dataloader_train):\n", + " x, (event, time) = batch\n", + " optimizer.zero_grad()\n", + " log_hz = cox_model(x) # shape = (16, 1)\n", + " loss = neg_partial_log_likelihood(log_hz, event, time, reduction=\"mean\")\n", + " loss.backward()\n", + " optimizer.step()\n", + " epoch_loss += loss.detach()\n", + "\n", + " if epoch % (EPOCHS // 10) == 0:\n", + " print(f\"Epoch: {epoch:03}, Training loss: {epoch_loss:0.2f}\")\n", + "\n", + " # Reccord loss on train and test sets\n", + " epoch_loss /= i + 1\n", + " train_losses.append(epoch_loss)\n", + " with torch.no_grad():\n", + " x, (event, time) = next(iter(dataloader_val))\n", + " val_losses.append(\n", + " neg_partial_log_likelihood(cox_model(x), event, time, reduction=\"mean\")\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "0e2bdd8c-f84c-4003-98f4-220ddab518d1", + "metadata": {}, + "source": [ + "We can visualize the training and validation losses." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "21afc248-303a-4156-8d9c-b97be3e0a56b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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POTXWbFiBe655x488MAD2LFjB2bPno358+ejuLgYAAtdaYlUOJLCmr0P+p8SBEH0HeI+xDl//nzMnz8/as/xer244447MHLkSLzxxhty6OjgwYOYM2cO7r33Xtx///0hvc5f//pX3HzzzXLi/xNPPIE1a9bgmWeewcMPP4z+/fv7OGYlJSU444wzzP6ZBEEQBEH0UuLeQYs2NpsNq1evxo4dO3D99dfD6/XiyJEjOPfcc7Fo0SJDcRaMzs5ObN++HfPmzfO5fd68ediyZQsAYMaMGdi9ezdOnTqFpqYmrF69GhdccIHhNv/+979j3LhxOP3000NaU19iyJAheOKJJ0w/fsOGDRAEgSpfCYIgiLgg7h207qCoqAjr16/HWWedhWuuuQaff/455s6di2effTbkbVZXV8Pj8SA/P9/n9vz8fDls6nA48Nhjj2HOnDnwer24//77Ayb233HHHbjjjjvQ2NiIjIyMkNcWr5xzzjmYMmWKJWFlxFdffYWUlBTTj581axbKysp65ftKEARB9DxIoEkMGjQIL7/8Ms4++2wMGzYM//znPyOS86PdhiiKPrctWrQIixYtCvt1+gKiKMLj8cDhCP6xzcvLs7TthIQEFBQUhLo0giAIorfQ1QY0lQMJqUCqtWNJJOnzIU5ORUUFbrvtNixcuBCtra249957w9pebm4u7Ha7X5FBZWWln6tGADfeeCM+/fRTPPnkkxAEAYIgYPny5RAEAWvWrMH06dORmJiIjRs34siRI7j44ouRn5+P1NRUnH766Vi7dq3P9rQhTkEQ8MILL+CSSy5BcnIyRo4ciXfffVe+XxviXL58OTIzM7FmzRqMHTsWqampuPDCC1FWViY/x+1246677kJmZiZycnLwi1/8AjfccAO+//3vR/OtIgiCIKJJ2TfA36YAL84L+tBoQgINLBw5d+5cjB07Fm+//TbWr1+PN998E/fdd1/I20xISMC0adPw8ccf+9z+8ccfY9asWeEu2RKiKKK10x2TH71KVT2efPJJzJw5E7feeivKyspQVlaGgQMHAgDuv/9+PPzww9i3bx8mTZqE5uZmLFiwAGvXrsWOHTtwwQUXYOHChXJ1rBG/+93vcOWVV+Lbb7/FggULcO2116K2ttbw8a2trXj00Ufxyiuv4LPPPkNxcbHPZ+LPf/4zXnvtNfzrX//C5s2b0djY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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_losses(train_losses, val_losses, \"Cox\")" + ] + }, + { + "cell_type": "markdown", + "id": "bd881d14-9646-48e0-bcc3-f29be358161f", + "metadata": {}, + "source": [ + "### Section 1.3: Cox proportional hazards model evaluation\n", + "\n", + "We evaluate the predictive performance of the model using \n", + "\n", + "* the [concordance index](../_autosummary/torchsurv.metrics.cindex.html) (C-index), which measures the the probability that a model correctly predicts which of two comparable samples will experience an event first based on their estimated risk scores,\n", + "* the [Area Under the Receiver Operating Characteristic Curve](../_autosummary/torchsurv.metrics.auc.html) (AUC), which measures the probability that a model correctly predicts which of two comparable samples will experience an event by time t based on their estimated risk scores.\n", + "\n", + "We cannot use the Brier score because this model is not able to estimate the survival function." + ] + }, + { + "cell_type": "markdown", + "id": "0d2e7996", + "metadata": {}, + "source": [ + "We start by evaluating the subject-specific relative hazards on the test set " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "272a997d-a978-4e9b-bb0b-d90e4f03a530", + "metadata": {}, + "outputs": [], + "source": [ + "with torch.no_grad():\n", + " # test event and test time of length n\n", + " x, (event, time) = next(iter(dataloader_test))\n", + " log_hz = cox_model(x) # log hazard of length n" + ] + }, + { + "cell_type": "markdown", + "id": "77bd0fe9", + "metadata": {}, + "source": [ + "We obtain the concordance index, and its confidence interval" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "3c9ad489-9e53-40ac-8931-8941597760a8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cox model performance:\n", + "Concordance-index = 0.6208181381225586\n", + "Confidence interval = tensor([0.5067, 0.7349])\n" + ] + } + ], + "source": [ + "# Concordance index\n", + "cox_cindex = ConcordanceIndex()\n", + "print(\"Cox model performance:\")\n", + "print(f\"Concordance-index = {cox_cindex(log_hz, event, time)}\")\n", + "print(f\"Confidence interval = {cox_cindex.confidence_interval()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "507b410a", + "metadata": {}, + "source": [ + "We can also test whether the observed concordance index is greater than 0.5. The statistical test is specified with H0: c-index = 0.5 and Ha: c-index > 0.5. The p-value of the statistical test is" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7d34ba82", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "p-value = 0.01896047592163086\n" + ] + } + ], + "source": [ + "# H0: cindex = 0.5, Ha: cindex > 0.5\n", + "print(\"p-value = {}\".format(cox_cindex.p_value(alternative=\"greater\")))" + ] + }, + { + "cell_type": "markdown", + "id": "a60919a9", + "metadata": {}, + "source": [ + "For time-dependent prediction (e.g., 5-year mortality), the C-index is not a proper measure. Instead, it is recommended to use the AUC. The probability to correctly predicts which of two comparable patients will experience an event by 5-year based on their estimated risk scores is the AUC evaluated at 5-year (1825 days) obtained with" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "907312f9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AUC 5-yr = tensor([0.7089])\n", + "AUC 5-yr (conf int.) = tensor([0.6492, 0.7687])\n" + ] + } + ], + "source": [ + "cox_auc = Auc()\n", + "\n", + "new_time = torch.tensor(1825.0)\n", + "\n", + "# auc evaluated at new time = 1825, 5 year\n", + "print(f\"AUC 5-yr = {cox_auc(log_hz, event, time, new_time=new_time)}\")\n", + "print(f\"AUC 5-yr (conf int.) = {cox_auc.confidence_interval()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "41e7e69f", + "metadata": {}, + "source": [ + "As before, we can test whether the observed Auc at 5-year is greater than 0.5. The statistical test is specified with H0: auc = 0.5 and Ha: auc > 0.5. The p-value of the statistical test is" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "702e5a74", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AUC (p_value) = tensor([0.])\n" + ] + } + ], + "source": [ + "print(f\"AUC (p_value) = {cox_auc.p_value()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "b8f517e6-b0a4-4fbc-aac5-b500b4aca169", + "metadata": {}, + "source": [ + "## Section 2: Weibull accelerated failure time (AFT) model" + ] + }, + { + "cell_type": "markdown", + "id": "769ddcf5", + "metadata": {}, + "source": [ + "In this section, we use the [Weibull accelerated failure (AFT) model](../_autosummary/torchsurv.loss.weibull.html). Given covariate $x_{i}$, the hazard of patient $i$ at time $t$ has the form\n", + "$$\n", + "\\lambda (t|x_{i}) = \\frac{\\rho(x_{i}) } {\\lambda(x_{i}) } + \\left(\\frac{t}{\\lambda(x_{i})}\\right)^{\\rho(x_{i}) - 1}\n", + "$$\n", + "\n", + "Given the hazard form, it can be shown that the event density follows a Weibull distribution parametrized by scale $\\lambda(x_{i})$ and shape $\\rho(x_{i})$. The subject-specific risk of event occurence at time $t$ is captured through the hazards $\\{\\lambda (t|x_{i})\\}_{i = 1, \\dots, N}$. We train a multi-layer perceptron (MLP) to model the subject-specific log scale, $\\log \\lambda(x_{i})$, and the log shape, $\\log\\rho(x_{i})$. " + ] + }, + { + "cell_type": "markdown", + "id": "a580702e", + "metadata": {}, + "source": [ + "### Section 2.1: MLP model for log scale and log shape" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "35b92c10-e5fb-491d-9e27-743bcffdced2", + "metadata": {}, + "outputs": [], + "source": [ + "# Same architecture than Cox model, beside outputs dimension\n", + "weibull_model = torch.nn.Sequential(\n", + " torch.nn.BatchNorm1d(num_features), # Batch normalization\n", + " torch.nn.Linear(num_features, 32),\n", + " torch.nn.ReLU(),\n", + " torch.nn.Dropout(),\n", + " torch.nn.Linear(32, 64),\n", + " torch.nn.ReLU(),\n", + " torch.nn.Dropout(),\n", + " torch.nn.Linear(64, 2), # Estimating log parameters for Weibull model\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "e96c6985", + "metadata": {}, + "source": [ + "### Section 2.2: MLP model training" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "3d5c6f77-6245-42b0-ae48-33b57789b651", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch: 000, Training loss: 2553.52\n", + "Epoch: 010, Training loss: 65.31\n", + "Epoch: 020, Training loss: 58.48\n", + "Epoch: 030, Training loss: 57.22\n", + "Epoch: 040, Training loss: 56.44\n", + "Epoch: 050, Training loss: 56.93\n", + "Epoch: 060, Training loss: 54.62\n", + "Epoch: 070, Training loss: 53.74\n", + "Epoch: 080, Training loss: 54.39\n", + "Epoch: 090, Training loss: 53.20\n" + ] + } + ], + "source": [ + "torch.manual_seed(42)\n", + "\n", + "# Init optimizer for Weibull\n", + "optimizer = torch.optim.Adam(weibull_model.parameters(), lr=LEARNING_RATE)\n", + "\n", + "# Initialize empty list to store loss on train and validation sets\n", + "train_losses = []\n", + "val_losses = []\n", + "\n", + "# training loop\n", + "for epoch in range(EPOCHS):\n", + " epoch_loss = torch.tensor(0.0)\n", + " for i, batch in enumerate(dataloader_train):\n", + " x, (event, time) = batch\n", + " optimizer.zero_grad()\n", + " log_params = weibull_model(x) # shape = (16, 2)\n", + " loss = neg_log_likelihood(log_params, event, time, reduction=\"mean\")\n", + " loss.backward()\n", + " optimizer.step()\n", + " epoch_loss += loss.detach()\n", + "\n", + " if epoch % (EPOCHS // 10) == 0:\n", + " print(f\"Epoch: {epoch:03}, Training loss: {epoch_loss:0.2f}\")\n", + "\n", + " # Reccord losses for the following figure\n", + " train_losses.append(epoch_loss)\n", + " with torch.no_grad():\n", + " x, (event, time) = next(iter(dataloader_val))\n", + " val_losses.append(\n", + " neg_log_likelihood(weibull_model(x), event, time, reduction=\"mean\")\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "4aba21b6", + "metadata": {}, + "source": [ + "We can visualize the training and validation losses." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "243a4fa9-f751-46e7-83f3-e623bfd3518e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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FeZuS6NVMbs0a4SIiIgs65bmESLzYo8QERGRMurcI6RSqW46g7QkSSgvL7/tRjU2avYIERERKaLOQWj9+vU1vnbw4EF8+umnhiU3yDQMQkRERMqocxCqbrX3uLg4vPLKK9i0aRPGjRuHt99+26yNayw0hqExTqhIRERkSbdUI5Samoqnn34anTp1Qnl5OaKiorB8+XI0a9bM3O1rFNScUJGIiEgRJgWhnJwczJ49GyEhITh9+jR27tyJTZs2oUOHDvXVPkUsWrQIoaGhiIiIsMj51Nd+CgxCREREllXnIPTBBx+gRYsW2Lx5M3788UccPHgQffr0qc+2KcbSS2ywR4iIiEgZda4Revnll6HVahESEoLly5dj+fLl1e63bt06szWusdDw9nkiIiJF1DkIPfHEEze9fZ5uDe8aIyIiUkadg9CyZcvqsRmNm1piECIiIlICZ5a2Aho1gxAREZESGISsAJfYICIiUgaDkBWoXHSVEyoSERFZEoOQFWCPEBERkTIYhKxARRDSMwgRERFZFIOQFaiYUJE9QkRERJbFIFQNSy+xoeE8QkRERIpgEKqG5ZfYYI0QERGREhiErAAnVCQiIlIGg5AVUHNCRSIiIkUwCFkBLrpKRESkDAYhK6DmhIpERESKYBCyApU1Qgo3hIiIqJFhELIClTVCTEJERESWxCBkBVgjREREpAwGIStQMbM07xojIiKyLAYhK8B5hIiIiJTBIGQFNJxHiIiISBEMQlaAS2wQEREpg0HICnDRVSIiImUwCFXD0qvPqxmEiIiIFMEgVA2lVp9nECIiIrIsBiErUFkjxAkViYiILIlByAqwRoiIiEgZDEJWoGJCRd41RkREZFkMQlZAfe2nwB4hIiIiy2IQsgJcYoOIiEgZDEJWgIuuEhERKYNByArw9nkiIiJlMAhZAS66SkREpAwGISug5qKrREREimAQsgKsESIiIlIGg5AVqKwR4szSRERElsQgZAVYI0RERKQMBiEroGGNEBERkSIYhKqxaNEihIaGIiIiwiLn4xIbREREymAQqsaUKVMQExODI0eOWOR8XHSViIhIGQxCVkDFGiEiIiJFMAhZAdYIERERKYNByAqoOY8QERGRIhiErABrhIiIiJTBIGQFuOgqERGRMhiErACDEBERkTIYhKxAZY0Ql9ggIiKyJAYhK6C5NqGiXgZkmb1CRERElsIgZAUqeoQADo8RERFZEoOQFbg+CPEWeiIiIsthELICGvYIERERKYJByAqwR4iIiEgZDEJWQC2xR4iIiEgJDEJWQKWSUJGFGISIiIgsh0HISnCZDSIiIstjELISnFSRiIjI8hiErETFpIrsESIiIrIcBiEroWKNEBERkcUxCFVj0aJFCA0NRUREhMXOqVGzR4iIiMjSGISqMWXKFMTExODIkSMWO2dljRCDEBERkaUwCFkJ3jVGRERkeQxCVkIlMQgRERFZGoOQldCoOTRGRERkaQxCVkLNoTEiIiKLYxCyEhpOqEhERGRxDEJWQn1tQkXmICIiIsthELIS16YRYo8QERGRBTEIWQk1l9ggIiKyOAYhK6HhhIpEREQWxyBkJSruGtMzCBEREVkMg5CVUEvsESIiIrI0BiErUTGhImuEiIiILIdByEpw0VUiIiLLYxCyEpWLrvL2eSIiIkthELISlYuuKtwQIiKiRoRByEpU1ggxCREREVkKg5CVqJhQkTVCRERElsMgZCU0XH2eiIjI4hiErERljRCDEBERkaUwCFkJLrFBRERkeQxCVkLNCRWJiIgsjkHISrBHiIiIyPIYhKxERY0QF10lIiKyHAahaixatAihoaGIiIiw2DnZI0RERGR5DELVmDJlCmJiYnDkyBGLnVPNCRWJiIgsjkHISrBHiIiIyPIYhKxExczSrBEiIiKyHAYhK6GW2CNERERkaQxCVqJi0dWzGfmcS4iIiMhCGISsRP82TWCrVuFQQhZeXR8NWWYYIiIiqm8MQlaivb8rPn6kC1QSsOpIMv67NV7pJhERETV4DEJWZGhHP7w7qiMA4PM95/DFnnMKt4iIiKhhYxCyMmO7N8PsIW0BAPN+i8PqI0l1fq9eL2PNsYvo+8EuTF5xDJn5JfXVTCIiogZBklmMUqPc3Fy4uroiJycHLi4uFj33vC2x+GLveQDAoFAfzBrSBiHezjXufzo1B6//chrHLmQbtnk52eK/ozthQDufem8vERGRtTDl+5tBqBZKBiFZlvH+b3H4at956GVAJQFjwgMx457W8HW1h04vI6ugFJfzSrD6SBK+/+sC9DLgYKvGv3sH4/eYS4hLzwMAPHpXM7w2vB0cbDV1Pn9GXjE+3XkWGXnF6NbMHRHBHujg7wpbjQqyLCM5qwgnkrPxd3IO7G1UmNCrObyd7as9VurVIlzMLkJEc3dI16YJICIiqi8MQmaiZBCqcDYjDx9sjcfvMZcAAHYaFZztbZBVUIIb77If3skPrw1vBz9XLYrLdPjw93h8tS8BANDMwwFDO/iiazN3dAtyqzG06PUyVh5Owgdb45BXXG70mr2NCm18XZB0pQDZhWVGrznYqvFs35Z4um+wIXAlZBZg8a6zWH8iBeV6GX1bN8G793dAoIeDOS4NERFRtRiEzMQaglCFYxeyMG9LHI5eN/QlSYCnoy2CvRwx457W6BXiVeV9B85m4j8//Y303GKj7YEeWnQKcEMbX2e08XVGO18X5JWU4bUNp3Ai6SoAoGOAK4Z29MXxC1dx9EIWrl4XfmzVKrTzd0GXpq44mZJjeI+Pix0m92uJ40lXsflkqiGsqVUSdHoZWhs1/jOoNSb0bA6NurJETZZlyDKgUrHHiIiIbg+DkJlYUxACRFiIScsFADRxtoOHg61RmKhJbnEZfj99CceTsnH8QjbiL+Whtp+6k50G/xnUGk/0aA71tWCi18s4dzkfMWm5aObhgFB/F9hp1IZ2bT6Zhv9ujcPF7CKjY93TzhtTIkPgorXB/62LxqGELAAiZPVo6YmkK4W4kFWI5KxC6PQynurdHFMiQ0waxiMiIroeg5CZWFsQMpe84jJEJV9FbFou4tLyEJeeh7MZ+SjV6TG0gy/eGNEevq7VD53VpqRch+8OXsCyg4noEuiG5yJbor2/q+F1vV7GT0eT8d6WWOTeMOx2vQA3LebcG4rB7X1YU0RERCZjEDKThhqEqlOu06OgRAdXB5t6P1dGXjG+2Z+A0nI9gjwc0MzTAc08HHA2owBvb45BylXRq9SvdROMCQ+ETpZRVq5HuV4PJzsb3BPqbeiNIiIiuhGDkJk0piBkLYpKdVi8+yy+2HMepTp9tfsMaOuNLx4Pq9OwIBERNT4MQmbCIKSchMwCfLT9DNJyiqBRqWCjUcFGJWH/2UyUlOvx6F3N8O79HTh0RkREVZjy/c2KVLJKwV6O+GRs1yrbt55Kx+SVx/DDoSQEuGkxJTJEgdbRnaK0XI8NUSno17oJfFxMr3sjooaPYwt0RxnSwRdzR7QHAPxvWzzWHb9okfPKsozoiznYHnMJxWU6k9637XQ6fj+dDna+Wt6832Ixa81JPP7NIZN+bkTUeLBHiO4443s2R8rVIny59zxmrTkJTyc79GvdpMb9i8t0uFJQCkdbNRztNLCpY22RLMuISr6K306lY0t0mmFqgOaeDpg7sj36t/Gu9f05hWX4v/XR+DU6DQAQ2aYJ3nugI/xctXX8pKY7cykPhxKy8GC3ptDaNu6C8qOJWVh2MBEAcOZSPv63LR5z7g1VtlFEZHVYI1QL1ghZL71exrRVJ7D5pAgZbX2dMSjUB4Pa+6K9vwuSsgqxKy4Du+Iv48/zV1BaXll4batRwdlOg/5tvPFsvxZo7WO8hltBSTlWHUnGt/sTDHewAYDWRg2trRpZBaUAgMHtffD6iPYIcKsabA4nZGHGqhNIzSmGRiVBJUko1enhbKfB/w1vh0ciAo3qm4rLdJBl3FZ4+eloMl7bcAql5Xp0b+6BbyaEw9m+/u8CtEbFZToM+3gfzmcWoEugG6KSrwIAVv77rmonHiWihoXF0mbCIGTdSsp1ePHnk9gSnQbddeuNONtpkFdiPE+RRiWh/MY1Sa4Z0NYbk/q3RMsmTlh+MBHL/0w0zKLtaKvGgHY+GNbRF/1ae6Ncr8fHO/7B0oOJ0Oll2NuoMKyjH/xdtfB2sYO3sz1OpeRg8e6z0Mui9+jjR7rC0U6Nl9acNMzAfVewBwLctEjKKkRSViEy8kogSUCQhwPa+bkg1M8F7fxc8K+WnnCyq73jtrhMhzc3ncaPh5MBiHXp9DLQqakrlj/ZHe6Otrd6ie9YFYsWezvbYfvMfvhgaxxWHkqCr4s9ts3oa5FpIohIOQxCZsIgdGe4WliKP+Iy8PvpS9hz5jKKynTQqCRENPdAZNsmiGzjjRBvJ5TpZBSWliO/pBwXs4uw/GAitp5ON8yyfX1Yau7pgGf7tcSorgGwt6naSxOfnoc5v5zC4WszZVfnwbCmmDuyvSHI6PQylh5IwP+2xaOkvPqpAW5kb6PCkPa+GB3WFD1behlm+q5wMbsQk1ccR3RKDiQJmHlPa/Rv443xSw8jq6AUrX2csGLiXfC+rlC4XKfHpbwSONio4aK1MRxTlmVk5pfi3OV8nLucjyv5pRjawRetbugxu5niMl211yw9pxh/ns/EwbNXkJ5bjLvbemNEZ394OdmZdPybiUq+igcWH4BeBr5+Ihz3hPqgsLQcwz/Zj4TMAtzbyQ+fju0KSZJQWFqOTX+nYkt0Onxc7DCisz96tPCsMjVDmU6Pfy7lQ2urRpCHQ41LwciyzDsZiawAg5CZMAjdeYrLdIhLz0PLJo51GhY6fzkfX+07j7XHUlCq06NDgAsm9wvBkA6+VULHjWRZxq74DMSm5eFSbjEu5RYjI68EZTo9nu7TAvd1Caj2fQmZBVhzLBmOdhoEuovJJAM9HCDLMmLT8hCblovYtFwcT8pG4pVCw/t8XezRK8QLucVlyMwvwZX8UqTnFKNUp4ebgw0+eaQr+l6rlTqbkYdxXx/CpdwSBHk6YEr/EMSk5SI6JQenU3NQXFYZxJztNHDR2iCvuKzKjN8alYRn+rbA83e3uumw3Z/nruDtzTGIScuFk50G3s52aOJsB08nW8Sl5+H85YIq79GoJPRr3QQPdGuKPq294HKbQ3kl5Trc+8l+/JORj/u7+GPhI5V3HkYlX8XoJQeh08uYPaQtLuUWY+3xi1UWF/ZyssWwjn4IC3JHTFouTly4ipMpVw3XzNlOgw4BrujY1BXNPR2RerUI5zPzcf5yARIyC+DvpsVz/UWI5lxX9aOkXIfzlwug08sI8XaqNnhT48YgZCYMQo1HZn4JsgpK0crbyWr+RS/LMv6+mIO1xy5i49+pyCkqq3a/zoFuWPRoVzR1dzDanpxViEe//gvJWUVV3mOjllCmq/pXX5KAQHcHtGziiFKdHgfOXgEgFul9a2QHRLatWiCenFWI97bE4rdT6bV+HpUk1pj7V0tPeDnaYdPJVJy8mGO0j7uDDZp5OiLIwwHNPR3QIcAVnQPd6nTre3ZBKeb/Ho+Vh5Lg5WSL7S/0qzIsuHDHGSzc8Y/RtiBPB4wJD0Tq1SJsiU5DdmH119nZXoPScn2de/NaeDli+j2tMKKT/00XE5ZlGbnF5bhaWIrswjJkF5aitFwPZ3sNXOxtxEOrgavW5rZ+P8t0epy7nA9PRxFSaxKXnouCEh3Cgtxv+Vy3SndtXcP0nGIUlIge3IKScmQXluFsRj7iL+UhIbPAMByukoAWTZzQ1tcZ7fxcMKyjH4K9HKs9drlOj8MJWWjn59Ioh4wbEwYhM2EQImtRUq7DH7EZ+CcjH+6OtmjiZAsvJzt4OdkhyNOhxi/H9JxizPwpCiXlenRq6nrt4YZgT0foZBm5RWXIufbQ2qrR3NPR8K9rWZbxe8wlzN14Gmk5xQCA8CB3+Ltp4aq1gavWBvkl5fjhcBJKy/VQScC4u4IwuX9LFJfpkJFXgku5xcjML0WguxZ3tfCEq9a4x+dsRh7WHU/Bxr9TqyzYez1fF3t0auqKdn4uCPZyRJCnA5p7OkJrq8bO2AysP5GC3fEZhqHNJeO6YWhHvyrHKdfp8dg3h3AkMRv3tPPGuLuC0DvEyxBUynR6HDx3BRujUnE2Iw/t/FzQrZk7ugW5oYWXE3SyjH8u5SM65SqiU3KQlFWEADctWjZxRMsmTmjm6YAdMZfw+Z5zhkDVytsJEcEe8He1h5+rFn5u9ijXyYhPz0Nsei7i0/PwT0a+UUF/TVzsNWh7rYasra8zWvk4I8BNiybOdkY9mLIsI6ugFMnZRUjIzMffyTk4efEqTqfmoqRcD1u1Ck/1DsaUyJZGPadZBaX4YGscVh9NhiwDwzr64vV7b23twbq6kl+C/WczcfKiaOOplFwU1WGqAxd7DdQqqUpwlSRgaAdfTOrXEp2augEQC0+vPpyMZQcTkXK1CL4u9lj2VATa+lb//3VZliHLuGmArStZlpGWU4zolBxcuFKAu4I90TnQzSzHVtqV/BIcT7qKYxeyoZdl/Lt3sNFQfG1kWcbl/BJcyilBx6auN3+DCRiEzIRBiEjcRbdwxxl8eyDRqCj9ej1aeOKNkaE1frHURX5JOZKuFCIpqwAXrhTibEY+olNycOZSHmo4LdQqyahN7f1dML5nc4wJD6zxPOU60avjeJMi9NuRX1KOpfsT8OW+81WG3mqjtVHDw9EWbg42sNWokF9cjtziMuQWldcaDlQS4O1sDx9XexSVihq4wtLq97e3URmG+byc7PDS4NZ4oFtTrDqSjPnb4g09jxVF9052GvxnUGs80aM51CoJKVeLsPfMZez75zL+uZSPojIdist0KCrVoUwno1+bJnj93lAEejhUe34AuJRbjG2nxbQUhxOyqvx8HWzVaObhACc7DRztNHCy08DZXoMWTRzRxtcFbXyc4eMierQu55UgJi0Xcel5+PPcFew5c9lwnF4hnghp4oQ1xy6i4Nr1kCRAlsUQ5xePh6HndXcR6vQyfjychIU7ziAzvxS2GhXsNSpobdWwt1HDXqOGvY1K/NlGDb0so6hUh8JSHYrKdCgp08Hx2lCzi73owcsuLMOplBxcuXa3aYW7gj3wbL8W6N/au9bAlZ5TjM/3nENMWi6e6hVs1sWoT6Xk4J1fY5CYWYggTwe0aOKEFl6OCPRwwNXCUqRcLUJKdhEuXi1CfnE5tLZqaK99dhu1hPj0PJzPNB7y9nKywydju6Bny6p3Z2bml2BHzCXEpechPj0P8ZfykFVQCk9HWxybM9Asn6kCg5CZMAgRVTp3OR/HL2Qjp6jM0JNUWKrDgHY+Zv2f840KS8txKiUXJy9exdmMfCRkiqCUnit6qQLctLiviz/u7xpQZSoEpeUUlWHbqXRczC5Eak4x0nKKkHa1GJDElA9tfUXPThtfZ/i42Nda61JcpsO5y/mIS8tDXHouYtPycO5yPjLySqoNqJIE+Djbo5mHA9oHuKBzUzd0ulbX9EdcBt7dEouEa19i199pGerngrfuaw8HWw1e3RBtuNOxra/ztaG1qrVeN7K3UWH6gNb4d59gw7xdVwtLsflkGn6JSsHRC9m4/punvb8LwoPc0elaG1s0cbppjV5N4tPz8MWec/jl71Sj69LK2wn/7hOMyDbemPrDCRxOzIKNWsL8hzrjvi4BOJ6Ujdd/OYVTKbm3dN6bUasktPJ2gp+rPfb9k2novWzl7YTHewShWzN3tPZxhq1GXK9LucVYsvucoce1Qtdmbpg9pC3+1cLT6PhlOj0u55XAVqMSU33YqGsMWPkl5Vjw+xksO5hQ4z8yTBHi7YSwZu6ISr6K+Et5UEnAzIGt8Vz/EKhUEpKzCvHl3vP46WhylaFlSQKaezpi0/O9b3qHrCkYhMyEQYjIehWWluNKfikC3LRmG8K4E+n0MjLzS5CeU4y0nGI42KoR6OEAfzd72GlqDlal5Xp892ciPt75D/KKy+Fsr8GLg9pg3F3NDEXeer2MH48k4b+/xRkK6VUS0LWZO/q08kJYkDuc7DSGnoLconK882sMDl27m7KNjzPG92yO3fEZ2BWfYVSX1q2ZG4Z28MOQDr619h7dquSsQiw7mIjM/BI80K0p+rbyMoT14jId/vPT34bJTnuHeGH/2UwAohbsPwNb497O/igp1xt6u0rKdSgu06OoVIfia39WSaL3SmurgYOtGrZqFQpKy5FbJHrxKoacOwS4oq2vsyHopuUUYemBRPxwKAn51031YatWobWvEwLdHfBHXIYhNHRv7oHOga5Y8VeSoWewX+sm6BDggrMZ+TibkY8LVwqrTBFip1HBx8XeUD/Vzs8ZJeV6zNsSZ/iHxIjO/nj8X0FIuVqI85cLcD6zABezCuHmYIsAdy0C3LRo6i6Gw4vLxPUoLBW9gMFejujazA1uDqLeqqhUh9d/OYWfj4kZ//u2bgJ3BxtsPlk5xUnHAFfcFeyB1r7OYnjX27leJn9lEDITBiEiauiu5Jfgj7gMRLb1rnEqg8t5Jdj0dyp8Xe3Rq6VXrfMwybKMtcdT8N6WWMPkoxVC/VwwqmsA7u3sV68zrNeFXi/jnV9j8e2BBMO2h8KaYvbQtmaf0qEmucVlWHU4CbvjL+NUSk6VuzbDgtzxwj2t0SvEE5IkISOvGJ/uPIsfDydVOy9abfOl3aiZhwPevr9DrbPy36qfjibj9V9OGd2d2rd1E0zu1xL/auFhkRtSGITMhEGIiOjWZBeU4n+/x+Pv5Kvo3coLD3Rtija+1jV0CQArD13AnvjLeLZfS0XukqsgyzIuZhfhVEoOzmbko0szN/QO8ao2NCRmFmDpgQSU6WWENHFCiLd4+LnaQ5aBknI9isp0KCgpR3J2IWLT8hCXlovY9FxczivB6G5NMW1Aq3qddiAuPRdv/HIaPi72eKZvC3QIMG8x9M0wCJkJgxAREdGdx5Tvb872RURERI0Wg1A1Fi1ahNDQUERERCjdFCIiIqpHHBqrBYfGiIiI7jwcGiMiIiKqAwYhIiIiarQYhIiIiKjRYhAiIiKiRotBiIiIiBotBiEiIiJqtBiEiIiIqNFiECIiIqJGi0GIiIiIGi0GISIiImq0GISIiIio0dIo3QBrVrEMW25ursItISIiorqq+N6uy3KqDEK1yMvLAwAEBgYq3BIiIiIyVV5eHlxdXWvdh6vP10Kv1yM1NRXOzs6QJMmsx87NzUVgYCCSk5O5sn0947W2HF5ry+G1thxea8sx17WWZRl5eXnw9/eHSlV7FRB7hGqhUqnQtGnTej2Hi4sL/2JZCK+15fBaWw6vteXwWluOOa71zXqCKrBYmoiIiBotBiEiIiJqtBiEFGJnZ4c33ngDdnZ2SjelweO1thxea8vhtbYcXmvLUeJas1iaiIiIGi32CBEREVGjxSBEREREjRaDEBERETVaDEJERETUaDEIKWDx4sUIDg6Gvb09wsLCsG/fPqWbdMebN28eIiIi4OzsDG9vb9x///2Ij4832keWZcydOxf+/v7QarXo378/Tp8+rVCLG4558+ZBkiTMmDHDsI3X2nxSUlLw2GOPwdPTEw4ODujSpQuOHTtmeJ3X2nzKy8vx2muvITg4GFqtFi1atMBbb70FvV5v2IfX+9bs3bsXI0aMgL+/PyRJwoYNG4xer8t1LSkpwfPPPw8vLy84Ojpi5MiRuHjx4u03TiaLWrVqlWxjYyN/9dVXckxMjDx9+nTZ0dFRvnDhgtJNu6MNHjxYXrp0qXzq1Ck5KipKHj58uNysWTM5Pz/fsM/7778vOzs7y2vXrpWjo6Plhx9+WPbz85Nzc3MVbPmd7fDhw3Lz5s3lTp06ydOnTzds57U2j6ysLDkoKEieMGGCfOjQITkhIUHesWOHfPbsWcM+vNbm884778ienp7y5s2b5YSEBPnnn3+WnZyc5IULFxr24fW+NVu2bJFfffVVee3atTIAef369Uav1+W6Tpo0SQ4ICJC3b98uHz9+XI6MjJQ7d+4sl5eX31bbGIQsrHv37vKkSZOMtrVt21Z++eWXFWpRw5SRkSEDkPfs2SPLsizr9XrZ19dXfv/99w37FBcXy66urvLnn3+uVDPvaHl5eXKrVq3k7du3y/369TMEIV5r85k9e7bcu3fvGl/ntTav4cOHy0899ZTRtgceeEB+7LHHZFnm9TaXG4NQXa7r1atXZRsbG3nVqlWGfVJSUmSVSiVv3br1ttrDoTELKi0txbFjxzBo0CCj7YMGDcLBgwcValXDlJOTAwDw8PAAACQkJCA9Pd3o2tvZ2aFfv3689rdoypQpGD58OO655x6j7bzW5rNx40aEh4fjoYcegre3N7p27YqvvvrK8DqvtXn17t0bO3fuxJkzZwAAf//9N/bv349hw4YB4PWuL3W5rseOHUNZWZnRPv7+/ujQocNtX3suumpBmZmZ0Ol08PHxMdru4+OD9PR0hVrV8MiyjJkzZ6J3797o0KEDABiub3XX/sKFCxZv451u1apVOH78OI4cOVLlNV5r8zl//jyWLFmCmTNn4v/+7/9w+PBhTJs2DXZ2dnjiiSd4rc1s9uzZyMnJQdu2baFWq6HT6fDuu+9i7NixAPi7XV/qcl3T09Nha2sLd3f3Kvvc7vcng5ACJEkyei7LcpVtdOumTp2KkydPYv/+/VVe47W/fcnJyZg+fTp+//132Nvb17gfr/Xt0+v1CA8Px3vvvQcA6Nq1K06fPo0lS5bgiSeeMOzHa20eq1evxooVK/DDDz+gffv2iIqKwowZM+Dv74/x48cb9uP1rh+3cl3Nce05NGZBXl5eUKvVVdJrRkZGlSRMt+b555/Hxo0bsWvXLjRt2tSw3dfXFwB47c3g2LFjyMjIQFhYGDQaDTQaDfbs2YNPPvkEGo3GcD15rW+fn58fQkNDjba1a9cOSUlJAPh7bW4vvfQSXn75ZTzyyCPo2LEjHn/8cbzwwguYN28eAF7v+lKX6+rr64vS0lJkZ2fXuM+tYhCyIFtbW4SFhWH79u1G27dv346ePXsq1KqGQZZlTJ06FevWrcMff/yB4OBgo9eDg4Ph6+trdO1LS0uxZ88eXnsTDRgwANHR0YiKijI8wsPDMW7cOERFRaFFixa81mbSq1evKtNAnDlzBkFBQQD4e21uhYWFUKmMvxbVarXh9nle7/pRl+saFhYGGxsbo33S0tJw6tSp27/2t1VqTSaruH3+m2++kWNiYuQZM2bIjo6OcmJiotJNu6NNnjxZdnV1lXfv3i2npaUZHoWFhYZ93n//fdnV1VVet26dHB0dLY8dO5a3vZrJ9XeNyTKvtbkcPnxY1mg08rvvviv/888/8sqVK2UHBwd5xYoVhn14rc1n/PjxckBAgOH2+XXr1sleXl7yrFmzDPvwet+avLw8+cSJE/KJEydkAPKCBQvkEydOGKaOqct1nTRpkty0aVN5x44d8vHjx+W7776bt8/fqRYtWiQHBQXJtra2crdu3Qy3eNOtA1DtY+nSpYZ99Hq9/MYbb8i+vr6ynZ2d3LdvXzk6Olq5RjcgNwYhXmvz2bRpk9yhQwfZzs5Obtu2rfzll18avc5rbT65ubny9OnT5WbNmsn29vZyixYt5FdffVUuKSkx7MPrfWt27dpV7f+jx48fL8ty3a5rUVGRPHXqVNnDw0PWarXyvffeKyclJd122yRZluXb61MiIiIiujOxRoiIiIgaLQYhIiIiarQYhIiIiKjRYhAiIiKiRotBiIiIiBotBiEiIiJqtBiEiIiIqNFiECIiuglJkrBhwwalm0FE9YBBiIis2oQJEyBJUpXHkCFDlG4aETUAGqUbQER0M0OGDMHSpUuNttnZ2SnUGiJqSNgjRERWz87ODr6+vkYPd3d3AGLYasmSJRg6dCi0Wi2Cg4Px888/G70/Ojoad999N7RaLTw9PfHMM88gPz/faJ9vv/0W7du3h52dHfz8/DB16lSj1zMzMzFq1Cg4ODigVatW2Lhxo+G17OxsjBs3Dk2aNIFWq0WrVq2qBDcisk4MQkR0x5szZw5Gjx6Nv//+G4899hjGjh2L2NhYAEBhYSGGDBkCd3d3HDlyBD///DN27NhhFHSWLFmCKVOm4JlnnkF0dDQ2btyIkJAQo3O8+eabGDNmDE6ePIlhw4Zh3LhxyMrKMpw/JiYGv/32G2JjY7FkyRJ4eXlZ7gIQ0a277WVbiYjq0fjx42W1Wi07OjoaPd566y1ZlmUZgDxp0iSj99x1113y5MmTZVmW5S+//FJ2d3eX8/PzDa//+uuvskqlktPT02VZlmV/f3/51VdfrbENAOTXXnvN8Dw/P1+WJEn+7bffZFmW5REjRshPPvmkeT4wEVkUa4SIyOpFRkZiyZIlRts8PDwMf+7Ro4fRaz169EBUVBQAIDY2Fp07d4ajo6Ph9V69ekGv1yM+Ph6SJCE1NRUDBgyotQ2dOnUy/NnR0RHOzs7IyMgAAEyePBmjR4/G8ePHMWjQINx///3o2bPnLX1WIrIsBiEisnqOjo5VhqpuRpIkAIAsy4Y/V7ePVqut0/FsbGyqvFev1wMAhg4digsXLuDXX3/Fjh07MGDAAEyZMgXz5883qc1EZHmsESKiO95ff/1V5Xnbtm0BAKGhoYiKikJBQYHh9QMHDkClUqF169ZwdnZG8+bNsXPnzttqQ5MmTTBhwgSsWLECCxcuxJdffnlbxyMiy2CPEBFZvZKSEqSnpxtt02g0hoLkn3/+GeHh4ejduzdWrlyJw4cP45tvvgEAjBs3Dm+88QbGjx+PuXPn4vLly3j++efx+OOPw8fHBwAwd+5cTJo0Cd7e3hg6dCjy8vJw4MABPP/883Vq3+uvv46wsDC0b98eJSUl2Lx5M9q1a2fGK0BE9YVBiIis3tatW+Hn52e0rU2bNoiLiwMg7uhatWoVnnvuOfj6+mLlypUIDQ0FADg4OGDbtm2YPn06IiIi4ODggNGjR2PBggWGY40fPx7FxcX46KOP8OKLL8LLywsPPvhgndtna2uLV155BYmJidBqtejTpw9WrVplhk9ORPVNkmVZVroRRES3SpIkrF+/Hvfff7/STSGiOxBrhIiIiKjRYhAiIiKiRos1QkR0R+PoPhHdDvYIERERUaPFIERERESNFoMQERERNVoMQkRERNRoMQgRERFRo8UgRERERI0WgxARERE1WgxCRERE1GgxCBEREVGj9f8mVBLL0gOWPQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_losses(train_losses, val_losses, \"Weibull\")" + ] + }, + { + "cell_type": "markdown", + "id": "86139132-d337-47b7-a8ad-eac1e255f91d", + "metadata": {}, + "source": [ + "### Section 2.3: Weibull AFT model evaluation\n", + "\n", + "We evaluate the predictive performance of the model using \n", + "\n", + "* the [C-index](../_autosummary/torchsurv.metrics.cindex.html), which measures the the probability that a model correctly predicts which of two comparable samples will experience an event first based on their estimated risk scores,\n", + "* the [AUC](../_autosummary/torchsurv.metrics.auc.html), which measures the probability that a model correctly predicts which of two comparable samples will experience an event by time t based on their estimated risk scores, and\n", + "* the [Brier score](../_autosummary/torchsurv.metrics.brier_score.html), which measures the model's calibration by calculating the mean square error between the estimated survival function and the empirical (i.e., in-sample) event status." + ] + }, + { + "cell_type": "markdown", + "id": "1cb226f5", + "metadata": {}, + "source": [ + "We start by obtaining the subject-specific log hazard and survival probability at every time $t$ observed on the test set" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "11599a1f-597b-4ebf-8a15-d3f9db1ebcca", + "metadata": {}, + "outputs": [], + "source": [ + "with torch.no_grad():\n", + " # event and time of length n\n", + " x, (event, time) = next(iter(dataloader_test))\n", + " log_params = weibull_model(x) # shape = (n,2)\n", + "\n", + "# Compute the log hazards from weibull log parameters\n", + "log_hz = log_hazard(log_params, time) # shape = (n,n)\n", + "\n", + "# Compute the survival probability from weibull log parameters\n", + "surv = survival_function(log_params, time) # shape = (n,n)" + ] + }, + { + "cell_type": "markdown", + "id": "7e309515", + "metadata": {}, + "source": [ + "We can evaluate the concordance index, its confidence interval and the p-value of the statistical test testing whether the c-index is greater than 0.5:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "afd7e7a5-c909-41eb-a48f-a9c9832eb33b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Weibull model performance:\n", + "Concordance-index = 0.5878835320472717\n", + "Confidence interval = tensor([0.4809, 0.6949])\n", + "p-value = 0.05368185043334961\n" + ] + } + ], + "source": [ + "# Concordance index\n", + "weibull_cindex = ConcordanceIndex()\n", + "print(\"Weibull model performance:\")\n", + "print(f\"Concordance-index = {weibull_cindex(log_hz, event, time)}\")\n", + "print(f\"Confidence interval = {weibull_cindex.confidence_interval()}\")\n", + "\n", + "# H0: cindex = 0.5, Ha: cindex >0.5\n", + "print(f\"p-value = {weibull_cindex.p_value(alternative = 'greater')}\")" + ] + }, + { + "cell_type": "markdown", + "id": "d985e48c", + "metadata": {}, + "source": [ + "For time-dependent prediction (e.g., 5-year mortality), the C-index is not a proper measure. Instead, it is recommended to use the AUC. The probability to correctly predicts which of two comparable patients will experience an event by 5-year based on their estimated risk scores is the AUC evaluated at 5-year (1825 days) obtained with" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ca4e6c56", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AUC 5-yr = tensor([0.6249])\n", + "AUC 5-yr (conf int.) = tensor([0.5660, 0.6839])\n", + "AUC 5-yr (p value) = tensor([1.6332e-05])\n" + ] + } + ], + "source": [ + "new_time = torch.tensor(1825.0)\n", + "\n", + "# subject-specific log hazard at \\5-yr\n", + "log_hz_t = log_hazard(log_params, time=new_time) # shape = (n)\n", + "weibull_auc = Auc()\n", + "\n", + "# auc evaluated at new time = 1825, 5 year\n", + "print(f\"AUC 5-yr = {weibull_auc(log_hz_t, event, time, new_time=new_time)}\")\n", + "print(f\"AUC 5-yr (conf int.) = {weibull_auc.confidence_interval()}\")\n", + "print(f\"AUC 5-yr (p value) = {weibull_auc.p_value(alternative='greater')}\")" + ] + }, + { + "cell_type": "markdown", + "id": "66b00e9f", + "metadata": {}, + "source": [ + "Lastly, we can evaluate the time-dependent Brier score and the integrated Brier score" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "b1d99480-b643-4836-acd3-7614fa903543", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Brier score = tensor([0.2006, 0.2183, 0.2325, 0.2689, 0.2767])\n", + "Brier score (conf int.) = tensor([[0.1767, 0.1918, 0.2041, 0.2361, 0.2432],\n", + " [0.2244, 0.2447, 0.2609, 0.3018, 0.3102]])\n", + "Integrated Brier score = 0.19801028072834015\n" + ] + } + ], + "source": [ + "brier_score = BrierScore()\n", + "\n", + "# brier score at first 5 times\n", + "print(f\"Brier score = {brier_score(surv, event, time)[:5]}\")\n", + "print(f\"Brier score (conf int.) = {brier_score.confidence_interval()[:,:5]}\")\n", + "\n", + "# integrated brier score\n", + "print(f\"Integrated Brier score = {brier_score.integral()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "0ca1d08c", + "metadata": {}, + "source": [ + "We can test whether the time-dependent Brier score is smaller than what would be expected if the survival model was not providing accurate predictions beyond random chance. We use a bootstrap permutation test and obtain the p-value with:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "9754fdcd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Brier score (p-val) = tensor([0.8190, 0.6890, 0.8350, 0.5910, 0.7530])\n" + ] + } + ], + "source": [ + "# H0: bs = bs0, Ha: bs < bs0; where bs0 is the expected brier score if the survival model was not providing accurate predictions beyond random chance.\n", + "\n", + "# p-value for brier score at first 5 times\n", + "print(f\"Brier score (p-val) = {brier_score.p_value(alternative = 'less')[:5]}\")" + ] + }, + { + "cell_type": "markdown", + "id": "31f7e7f6-8f07-4f82-8653-8d0d2d1ed84f", + "metadata": {}, + "source": [ + "## Section 3: Models comparison\n", + "\n", + "We can compare the predictive performance of the Cox proportional hazards model against the Weibull AFT model." + ] + }, + { + "cell_type": "markdown", + "id": "ed057468-ce75-4d3e-a825-71b55effcec8", + "metadata": {}, + "source": [ + "### Section 3.1: Concordance index\n", + "The statistical test is formulated as follows, H0: cindex cox = cindex weibull, Ha: cindex cox > cindex weibull" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "ea66963f-2537-4390-bb65-c773275b292b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cox cindex = 0.6208181381225586\n", + "Weibull cindex = 0.5878835320472717\n", + "p-value = 0.31871694326400757\n" + ] + } + ], + "source": [ + "print(f\"Cox cindex = {cox_cindex.cindex}\")\n", + "print(f\"Weibull cindex = {weibull_cindex.cindex}\")\n", + "print(\"p-value = {}\".format(cox_cindex.compare(weibull_cindex)))" + ] + }, + { + "cell_type": "markdown", + "id": "f478e8df", + "metadata": {}, + "source": [ + "### Section 3.2: AUC at 5-year\n", + "\n", + "The statistical test is formulated as follows, H0: 5-yr auc cox = 5-yr auc weibull, Ha: 5-yr auc cox > 5-yr auc weibull" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "0c4e1651", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cox 5-yr AUC = tensor([0.7089])\n", + "Weibull 5-yr AUC = tensor([0.6249])\n", + "p-value = tensor([0.0118])\n" + ] + } + ], + "source": [ + "print(f\"Cox 5-yr AUC = {cox_auc.auc}\")\n", + "print(f\"Weibull 5-yr AUC = {weibull_auc.auc}\")\n", + "print(\"p-value = {}\".format(cox_auc.compare(weibull_auc)))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/notebooks/momentum.ipynb b/_sources/notebooks/momentum.ipynb new file mode 100644 index 0000000..7540592 --- /dev/null +++ b/_sources/notebooks/momentum.ipynb @@ -0,0 +1,567 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9c99b800-422a-4631-9b0f-192eefab4c6d", + "metadata": {}, + "source": [ + "# Survival with MNIST\n", + "\n", + "In this example, we will use the `PyTorch` lightning framework to further show how easy is it to use `TorchSurv`" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "eac2861e-9c15-4ab6-85b0-f8120a07119f", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import torch\n", + "import pytorch_lightning as L\n", + "from torchvision.models import resnet18\n", + "from torchvision.transforms import v2\n", + "from torchsurv.loss.cox import neg_partial_log_likelihood\n", + "from torchsurv.loss.momentum import Momentum" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "85c14ecf-33f2-4b48-bc94-db582e02bc8f", + "metadata": {}, + "outputs": [], + "source": [ + "# For simplicity (or laziness), we already implemented the datamodule for MNIST. See code for details\n", + "from helpers_momentum import MNISTDataModule, LitMomentum, LitMNIST" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "307fea5f-9a28-4258-90ea-05c3793d5a59", + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "dc09dd82", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Seed set to 123\n" + ] + } + ], + "source": [ + "from lightning.pytorch import seed_everything\n", + "\n", + "_ = seed_everything(123, workers=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "794004c5-588c-4590-ae96-c6d9e52109ff", + "metadata": {}, + "outputs": [], + "source": [ + "BATCH_SIZE = 500 # batch size for training\n", + "EPOCHS = 2 # number of epochs to train\n", + "FAST_DEV_RUN = None # Quick prototype, set to None for full training" + ] + }, + { + "cell_type": "markdown", + "id": "333ac482", + "metadata": {}, + "source": [ + "## Experiment setup" + ] + }, + { + "cell_type": "markdown", + "id": "72435795", + "metadata": {}, + "source": [ + "For this experiment, here's are our assumptions:\n", + "* We are using the [MNIST dataset](https://en.wikipedia.org/wiki/MNIST_database) as inputs. \n", + "* The `observed digits becomes the time to event` (e.g., the picture of a nine becomes time=9).\n", + "* To prevent log(0) issue, all zeros are transformed as tens (`time 0 -> 10`)\n", + "* All samples experienced an event (`no censoring`)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "4abbc6b0", + "metadata": {}, + "outputs": [], + "source": [ + "# Transforms our images\n", + "transforms = v2.Compose(\n", + " [\n", + " v2.ToImage(),\n", + " v2.ToDtype(torch.float32, scale=True),\n", + " v2.Resize(224, antialias=True),\n", + " v2.Normalize(mean=(0,), std=(1,)),\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ebf5caff", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABCcAAADtCAYAAACMCR9lAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACxbklEQVR4nO39e5ysV1Xnj3+q636v6vs5yclJcAhKTkCJEohiEsHEjITJwEwYeA0TQDEOJBJIBuQbhYRLEsAJ+FIiMjJJiKPxAipoVE4Ugk7wJQYwXDSDmpxc+/St7tfuruf3R36ffdaz66nuru6qrtt6v17Pq6rrVFdX1XnWs/f+7LU+y+c4jgNFURRFURRFURRFUZQBMTXoN6AoiqIoiqIoiqIoymSj4oSiKIqiKIqiKIqiKANFxQlFURRFURRFURRFUQaKihOKoiiKoiiKoiiKogwUFScURVEURVEURVEURRkoKk4oiqIoiqIoiqIoijJQVJxQFEVRFEVRFEVRFGWgqDihKIqiKIqiKIqiKMpAUXFCURRFURRFURRFUZSBMjHixIMPPoibbroJ+Xy+7d8uuugiXHTRRQf+nvbKn/zJn+DCCy9EKpVCPB7HOeecg0996lODflt9Y7v/u35TKpXwrne9C5dccgnm5ubg8/lw0003Hfj7GDTjED8XXXQRfD5fx2NpaWnQb7EvaPwMB+MQQ0THoINDY+hZxiV+/vIv/xI/+qM/img0inQ6jcsvvxzf+c53Bv22+orGz3AwLjEk+aVf+iX4fD4cO3Zs0G+lr0xaDE2UOHHzzTd7/sfecccduOOOOw7+Te2B2267Da9+9atx7Ngx/P7v/z4+//nP461vfSuazeag31rf2O7/rt+sra3hU5/6FBqNBq644ooD//vDwjjEzx133IGvfvWrruOv/uqvEAwG8ZKXvASLi4uDfot9QeNnOBiHGAJ0DDpoNIaeZRzi50/+5E9w2WWXYX5+Hp/97GfxyU9+Et/73vfwspe9DP/6r/866LfXNzR+hoNxiCHJN7/5TfzKr/wKFhYWBv1W+s6kxVDgQP7KkPP85z9/0G9hVzz00EO48cYbceutt+Jd73qXefzlL3/5AN/VeHP06FHkcjn4fD6srq7it37rtwb9loaOUYkfr/d59913Y2NjAz/7sz87gHc0/mj87I5RiSEdgw4ejaGdGZX4efe7341zzz0Xn/vc5+Dz+QAAF1xwAc4++2y8973vxf/5P/9nwO9w/ND42R2jEkNkc3MTb3rTm3D11VfjH//xH7G6ujrotzS2DCSGnAngfe97nwOg7fjSl77kOI7jXHjhhc6FF15onv/oo486AJyPfOQjzm233eYcPXrUiUQizoUXXug88sgjTrPZdN797nc7hw4dclKplHPFFVc4J0+ebPu79957r/OSl7zEicViTjwedy655BLn61//+p4/xxvf+EYnGo061Wp1z6/hxTPPPOP83M/9nHPaaac5wWDQOfPMM52bbrrJ2djYcBzHcZrNpjM3N+f81//6X9t+N5fLOZFIxHnHO95hHisUCs7111/vnHnmmU4wGHQOHz7svP3tb3fK5bLrdwE4b3vb25zPfOYzzvd///c70WjUecELXuB84QtfMM/Z6f/uIFlZWXEAOO973/sO/G8PknGJHy9e9rKXOYlEwimVSnt+DY2f3TGp8eM44xNDOgZpDA2CcYif1dVVB4Dz7ne/u+3fXvSiFzmxWMzZ3Nzc02tr/OyOSY0fxxmPGJJ84AMfcM444wynVCo5F154oXPOOefs6/U0hnbHQcXQRIgTTzzxhHPttdc6AJzPfe5zzle/+lXnq1/9qlMoFBzH6RyUR48edS6//HLnT//0T53f/u3fdhYWFpyzzz7becMb3uC8+c1vdv78z//c+eQnP+kkEgnn8ssvd/3ND33oQ47P53Pe/OY3O3/6p3/qfO5zn3Ne+tKXOvF43PnOd77T9reuuuqqHT/Hc57zHOdFL3qRc8899zhnn322MzU15Zx22mnOu9/9bqfRaOzpu3nmmWecI0eOOEePHnV+8zd/07n//vudD3zgA044HHbe+MY3mue94x3vcKLRqPnOyB133OEAcB5++GHHcRynUqk4P/iDP+jMzs46t99+u3P//fc7v/qrv+qk02nnJ37iJ5xWq2V+F4Bz5plnOi9+8Yud3//933fuu+8+56KLLnICgYDzr//6r47j7Px/50Wr1XI2NjZ2dXTDpA5s4xI/Nv/v//0/B4Dzsz/7s3v6XhxH46cbJjV+HGd8YkjHII2hQTAO8fP00087AJz3vve9bf/20pe+1AHgPPLII11/Nxo/u2dS48dxxiOGyHe+8x0nHA47f/Znf2be+37ECY2h3aPiRI/56Ec/6gBwHn300bZ/6xSUL3zhC52trS3z+Mc//nEHgPOqV73K9fvXXXedA8CcKI8//rgTCASca6+91vW8UqnkLC4uOldeeaV57LHHHnP8fr/z5je/ecfPEA6HnWQy6WSzWefXf/3Xnb/+6792brzxRsfv9zuvf/3rd/M1tHH11Vc7iUTCOXHihOvxX/mVX3EAmAvIww8/7ABwPvWpT7me9+IXv9g577zzzM+33nqrMzU15Xzta19zPe8P//APHQDOfffdZx4D4CwsLDjFYtE8trS05ExNTTm33nqreWy7/zsv7rzzTk+V0evohkke2MYhfmze/e53OwCcr371q13/LtH42T2THD+OMx4xpGPQo7v6TBpDvWfU42dra8uZnp52Xv7yl7sez+VyTjKZdAA4Dz744Lav4YXGz+6Z5PhxnNGPIcd5No7OP/9853Wve53rve9HnNAY2j0HFUPqObEN//7f/3tMTZ3yDP2BH/gBAMBP//RPu57Hxx9//HEcO3YMf/mXf4nNzU38t//237C5uWmeF4lEcOGFF+JLX/qSeezo0aOu52xHq9VCqVTC7/7u7+K//Jf/AgC4+OKLUalU8PGPfxw333wz/t2/+3ddfcY//dM/xcUXX4zDhw+73sdll12GG264AQ888ACe//zn49xzz8V5552HO++8E295y1sAAP/0T/+Ev//7v8cnPvEJ1+sdO3YMP/iDP+h6vUsvvRQ+nw9f/vKXcdlll5nHL774YiSTSfPzwsIC5ufnceLEia4+h+Tyyy/H1772tT3/vtIbhi1+JJubm7j77rtxzjnn4CUveUnXv080fpR+MmwxpGPQ7tAYGg6GKX6mpqbwtre9DR/4wAfwgQ98AFdffTWKxSKuu+46VKtV85xu0fhR+skwxRAA3H777fje976Hz3/+83v+TDYaQ8OHihPbMD097fo5FApt+3i9XgcAnDx5EgDwIz/yI56vu5cBCABmZmawtLSESy+91PX4ZZddho9//OP4+te/3vXE8OTJk/jCF76AYDDo+e/SZObNb34z3va2t+Gf//mf8f3f//248847EQ6H8brXvc71ev/yL/+yq9fjZ7IJh8Oo1WpdfQ7J9PQ00un0nn9f6Q3DFj+S++67D0tLS3j3u9+9r9fR+FH6ybDFkI5Bu0NjaDgYtvh573vfi3K5jA9+8IN473vfC+DZRd6b3vQm/NZv/RZOO+20rl9T40fpJ8MUQ48//jje+9734rbbbkMoFDKdKzY3N9FqtZDP5xEOhxGNRrt6XY2h4UPFiT4wOzsLAPjDP/xDHD16tGev+4IXvABLS0ttjzuOA2BvwT47O4sXvOAF+NCHPuT574cPHzb3X/e61+Gd73wn7rrrLnzoQx/CPffcgyuuuALZbNb1etFoFP/7f//vjn+v39x9991405vetKvn8rtThod+xY/k05/+NEKhEN7whjfs63U0fjR+hhEdgzSGlL3Tr/gJBAK4/fbb8f73vx+PPvooZmdncejQIVx66aU466yzcPrpp+/pvWr8KMNGP2Lo3/7t31Cr1fD2t78db3/729v+PZvN4u1vfzs+/vGPd/W6GkPDF0MTI06Ew2EA2JcStVsuvfRSBAIB/Ou//ite85rX9Ox1X/Oa1+CLX/wi/vzP/xyvf/3rzeP33XcfpqamOiqU2/HKV74S9913H77v+77PFVxeZLNZXHHFFfjMZz6Dl770pVhaWsKb3/zmtte75ZZbMDMzg7POOqvr9+NFt/93o57ONIyMQ/yQpaUl3HfffXj1q1/tqVh3g8aPslvGIYZ0DNIYGhTjED8kkUjg3HPPBQB8/etfx1/91V/hf/7P/7mn19L4UXbLqMfQD/7gD7rKQch1112HQqGAO++8c08Cn8bQ8DEx4gQHgl/91V/FVVddhWAwiOc973muOp9eceaZZ+L9738/brzxRvzbv/0bfuqnfgrZbBYnT57E3//93yMej+Pmm28GAJw4cQLf933fh6uuugqf/vSnt33dN73pTfjN3/xNvPWtb8Xq6iqe//zn4/7778cnPvEJvPWtb3WpkzfddBNuvvlmfOlLX8JFF13U8TXf//734/jx47jgggvwC7/wC3je856Her2Oxx57DPfddx8++clPuoL9zW9+M37v934P11xzDU4//XS84hWvcL3eddddh89+9rP48R//cbzjHe/AC17wArRaLTz++OP44he/iOuvvx7nn39+V99nt/93MzMz+150Sv78z/8clUoFpVIJAPDd734Xf/iHfwjg2Xq8WCzWs781rIxD/JC7774bm5ub+Nmf/dmOz9H40fjpNeMQQzoGaQwNinGIny9/+cv42te+hhe84AVwHAd///d/jw9/+MP4qZ/6KVxzzTWu52r8aPz0mlGPoUwm4xkLmUwGm5ubbf+mMTTCMdRX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B/tF40fjZzeM63mwXyY1fgCNoW4Z53NhP0xqDGn8dMe4ngf7ZejjZ192mgOALXQ+/elPO9/97ned6667zonH485jjz026Lc2MEqlkvONb3zD+cY3vuEAcG6//XbnG9/4hmkrdNtttznpdNr53Oc+53zrW99yXve613m2gzn99NOd+++/3/n617/u/MRP/MRYt9H57//9vzvpdNr58pe/7DzzzDPmqFar5jnj+r1pDLnR+OkejR+NH6Lx0z2THD+OozFkozHUPZMcQxo/bjR+umfY42fkxAnHcZxPfOITztGjR51QKOS86EUvMq1PJpUvfelLDoC246qrrnIc59mWMO973/ucxcVFJxwOOz/+4z/ufOtb33K9Rq1Wc6655hpnenraiUajzitf+Urn8ccfH8CnORi8vi8Azp133mmeM87fm8bQKTR+ukfjR+OHaPx0z6THj+NoDEk0hrpn0mNI4+cUGj/dM+zx4/v/v0lFURRFURRFURRFUZSBMFKeE4qiKIqiKIqiKIqijB8qTiiKoiiKoiiKoiiKMlBUnFAURVEURVEURVEUZaCoOKEoiqIoiqIoiqIoykBRcUJRFEVRFEVRFEVRlIGi4oSiKIqiKIqiKIqiKANFxQlFURRFURRFURRFUQaKihOKoiiKoiiKoiiKogwUFScURVEURVEURVEURRkoKk4oiqIoiqIoiqIoijJQVJxQFEVRFEVRFEVRFGWg/P8ARRa7+UWnvQQAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "torch.manual_seed(42)\n", + "\n", + "# Load datamodule\n", + "datamodule = MNISTDataModule(batch_size=BATCH_SIZE, transforms=transforms)\n", + "datamodule.prepare_data() # Download the data\n", + "datamodule.setup() # Wrangle the data\n", + "\n", + "# print image examples, with label\n", + "x, y = next(iter(datamodule.train_dataloader()))\n", + "\n", + "plt.rcParams[\"figure.figsize\"] = [13, 5]\n", + "for i in range(5):\n", + " plt.subplot(1, 5, i + 1)\n", + " plt.imshow(x[i].squeeze(), cmap=\"gray\")\n", + " plt.title(f\"time: {y[i]}, event = 1\")" + ] + }, + { + "cell_type": "markdown", + "id": "75d28cbc-89df-428f-bb6a-a313696ebddf", + "metadata": {}, + "source": [ + "## Setup model backbone\n", + "\n", + "First we need to define out model backbone. We will use the [resnet18](https://pytorch.org/hub/pytorch_vision_resnet/) model, without pretrained weights. We change two aspect of the model to fit our experiment:\n", + "\n", + "* Changed the first convolution layer to `fit our grayscale images`\n", + "* Changed the last dense layer to output a single value (here `log hazard`)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "c216fa33-de09-4be2-82cc-83cb73db3a42", + "metadata": {}, + "outputs": [], + "source": [ + "resnet = resnet18(weights=None)\n", + "# Fits grayscale images\n", + "resnet.conv1 = torch.nn.Conv2d(\n", + " 1, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False\n", + ")\n", + "# Output log hazards\n", + "resnet.fc = torch.nn.Linear(in_features=resnet.fc.in_features, out_features=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8056a675-fbce-4f4b-86c0-ab7dd924e4b1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([6, 1, 224, 224])\n", + "torch.Size([6, 1])\n" + ] + } + ], + "source": [ + "# Sanity checks\n", + "x = torch.randn((6, 1, 28, 28)) # Example batch of 6 MNIST images\n", + "print(f\"{transforms(x).shape}\") # Check input dimension\n", + "print(f\"{resnet(transforms(x)).shape}\") # Check output dimension" + ] + }, + { + "cell_type": "markdown", + "id": "0948492c-3e2a-405e-b239-cbb4483b50b8", + "metadata": {}, + "source": [ + "## Regular model training" + ] + }, + { + "cell_type": "markdown", + "id": "9439740a", + "metadata": {}, + "source": [ + "For this experiment, we are using the trainer from [pytorch lightning](https://lightning.ai/docs/pytorch/2.1.3/starter/introduction.html). Most of the boilerplate code is under the hood, so we can focus on the ease of using the `TorchSurv` loss." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "1e7a2c7e-a1ef-42fa-ba74-1d33a1dcf2f3", + "metadata": {}, + "outputs": [], + "source": [ + "# Train first model (regular training) using our backbone\n", + "model_regular = LitMNIST(backbone=resnet)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "3f577acf-a821-41a4-8544-318617755d1e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: True (mps), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n" + ] + } + ], + "source": [ + "# Define trainer\n", + "trainer = L.Trainer(\n", + " accelerator=\"auto\", # Use best accelerator\n", + " logger=False, # No logging\n", + " enable_checkpointing=False, # No model checkpointing\n", + " limit_train_batches=0.1, # Train on 10% of data\n", + " max_epochs=EPOCHS, # Train for EPOCHS\n", + " fast_dev_run=FAST_DEV_RUN,\n", + " deterministic=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "430079cc-4fad-4da2-8ea5-aa904c41ec0e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + " | Name | Type | Params\n", + "---------------------------------\n", + "0 | model | ResNet | 11.2 M\n", + "---------------------------------\n", + "11.2 M Trainable params\n", + "0 Non-trainable params\n", + "11.2 M Total params\n", + "44.683 Total estimated model params size (MB)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1: 100%|██████████| 11/11 [01:01<00:00, 0.18it/s, loss_step=218.0, val_loss_step=282.0, cindex_step=0.652, val_loss_epoch=287.0, cindex_epoch=0.665, loss_epoch=228.0]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "`Trainer.fit` stopped: `max_epochs=2` reached.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1: 100%|██████████| 11/11 [01:01<00:00, 0.18it/s, loss_step=218.0, val_loss_step=282.0, cindex_step=0.652, val_loss_epoch=287.0, cindex_epoch=0.665, loss_epoch=228.0]\n" + ] + } + ], + "source": [ + "# Fit the model\n", + "trainer.fit(model_regular, datamodule)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7854deb3-52f8-4a92-b38f-ff304bf82a34", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Testing DataLoader 0: 100%|██████████| 20/20 [01:20<00:00, 0.25it/s]\n", + "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n", + " Test metric DataLoader 0\n", + "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n", + " cindex_epoch 0.6686268448829651\n", + " val_loss_epoch -458.2862548828125\n", + "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n" + ] + }, + { + "data": { + "text/plain": [ + "[{'val_loss_epoch': -458.2862548828125, 'cindex_epoch': 0.6686268448829651}]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Test the model\n", + "trainer.test(model_regular, datamodule)" + ] + }, + { + "cell_type": "markdown", + "id": "8d4efafc-e731-423c-8d1d-5b5fabf573da", + "metadata": {}, + "source": [ + "# Momentum\n", + "\n", + "For the the last part of the experiment, we are using the `same backbone model`, but now using a momentum loss. This loss allows to use previously computed batch value to increasing the effective loss samples. Details can be found [here](https://opensource.nibr.com/torchsurv/_autosummary/torchsurv.loss.momentum.html#module-torchsurv.loss.momentum).\n", + "\n", + "The idea behind is fairly simple and inspired from MoCo to fit into a survival analysis. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "bab50a3f-5670-4264-b2c0-4eccb5f48624", + "metadata": {}, + "outputs": [], + "source": [ + "FACTOR = 10 # Number of batch to keep in memory. Increase our training batch size artificially by factor of 10 here\n", + "resnet_momentum = Momentum(resnet, neg_partial_log_likelihood, n=FACTOR, m=0.999)\n", + "model_momentum = LitMomentum(backbone=resnet_momentum)\n", + "\n", + "# By using momentum, we can in theory reduce our batch size by factor and still have the same effective sample size\n", + "datamodule_momentum = MNISTDataModule(\n", + " batch_size=BATCH_SIZE // FACTOR, transforms=transforms\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "00473ec0-9f44-47f2-824d-02dcc92dba7d", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: True (mps), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "IPU available: False, using: 0 IPUs\n", + "HPU available: False, using: 0 HPUs\n", + "\n", + " | Name | Type | Params\n", + "-----------------------------------\n", + "0 | model | Momentum | 22.3 M\n", + "-----------------------------------\n", + "11.2 M Trainable params\n", + "11.2 M Non-trainable params\n", + "22.3 M Total params\n", + "89.366 Total estimated model params size (MB)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1: 100%|██████████| 110/110 [01:18<00:00, 1.40it/s, loss_step=57.10, val_loss_step=63.80, cindex_step=0.848, val_loss_epoch=59.80, cindex_epoch=0.841, loss_epoch=58.10]" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "`Trainer.fit` stopped: `max_epochs=2` reached.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1: 100%|██████████| 110/110 [01:18<00:00, 1.40it/s, loss_step=57.10, val_loss_step=63.80, cindex_step=0.848, val_loss_epoch=59.80, cindex_epoch=0.841, loss_epoch=58.10]\n" + ] + } + ], + "source": [ + "# Define trainer\n", + "trainer = L.Trainer(\n", + " accelerator=\"auto\", # Use best accelerator\n", + " logger=False, # No logging\n", + " enable_checkpointing=False, # No model checkpointing\n", + " limit_train_batches=0.1, # Train on 10% of data\n", + " max_epochs=EPOCHS, # Train for EPOCHS\n", + " fast_dev_run=FAST_DEV_RUN,\n", + " deterministic=True,\n", + ")\n", + "# Fit the model\n", + "trainer.fit(model_momentum, datamodule_momentum)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "6441c1ea-b87f-4ff7-92dd-a8d7abf8daa5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Testing DataLoader 0: 100%|██████████| 200/200 [01:38<00:00, 2.03it/s]\n", + "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n", + " Test metric DataLoader 0\n", + "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n", + " cindex_epoch 0.858147144317627\n", + " val_loss_epoch 72.23859405517578\n", + "────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n" + ] + }, + { + "data": { + "text/plain": [ + "[{'val_loss_epoch': 72.23859405517578, 'cindex_epoch': 0.858147144317627}]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Validate the model\n", + "trainer.test(model_momentum, datamodule_momentum)" + ] + }, + { + "cell_type": "markdown", + "id": "0311c310", + "metadata": {}, + "source": [ + "## Let's compare the two models" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "855bda61", + "metadata": {}, + "outputs": [], + "source": [ + "# Setup metics for each model\n", + "from torchsurv.metrics.cindex import ConcordanceIndex\n", + "\n", + "cindex1 = ConcordanceIndex() # Regular model\n", + "cindex2 = ConcordanceIndex() # Momentum model" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "38b1f7d1", + "metadata": {}, + "outputs": [], + "source": [ + "# Infere log hazards on unseen batch from test data\n", + "model_regular.eval()\n", + "model_momentum.eval()\n", + "with torch.no_grad():\n", + " x, y = next(iter(datamodule.test_dataloader()))\n", + " y[y == 0] = 10\n", + " log_hz1 = model_regular(x)\n", + " # For momentum, we advice to use the target network for inteference\n", + " log_hz2 = model_momentum.model.target(x)" + ] + }, + { + "cell_type": "markdown", + "id": "3fe05aec", + "metadata": {}, + "source": [ + "Despite training with batches 10x smaller than the regular model, the momentum model is performing better than the regular model on the same test batch." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "112e2e5d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cindex (regular) = 0.6948477029800415\n", + "Cindex (momentum) = 0.8578558564186096\n", + "Compare (p-value) = 2.1650459203215178e-11\n" + ] + } + ], + "source": [ + "print(f\"Cindex (regular) = {cindex1(log_hz1, torch.ones_like(y).bool(), y.float())}\")\n", + "print(f\"Cindex (momentum) = {cindex2(log_hz2, torch.ones_like(y).bool(), y.float())}\")\n", + "# H1: cindex_momentum > cindex_regular, H0: same\n", + "print(f\"Compare (p-value) = {cindex2.compare(cindex1)}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/stats.rst b/_sources/stats.rst new file mode 100644 index 0000000..bfff45a --- /dev/null +++ b/_sources/stats.rst @@ -0,0 +1,8 @@ +Stats +======= + +.. autosummary:: + :toctree: _autosummary + + torchsurv.stats.kaplan_meier + torchsurv.stats.ipcw diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..e760386 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 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: 360px; + 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:visited { + color: #551A8B; +} + +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; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +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, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::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; +} + +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; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type: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 > 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; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +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; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- 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/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..d06a71d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (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: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..dab586c --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/images/logo_binder.svg b/_static/images/logo_binder.svg new file mode 100644 index 0000000..45fecf7 --- /dev/null +++ b/_static/images/logo_binder.svg @@ -0,0 +1,19 @@ + + + + +logo + + + + + + + + diff --git a/_static/images/logo_colab.png b/_static/images/logo_colab.png new file mode 100644 index 0000000000000000000000000000000000000000..b7560ec216b2d1b6f77855525fe966c741833428 GIT binary patch literal 7601 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 diff --git a/_static/images/logo_jupyterhub.svg b/_static/images/logo_jupyterhub.svg new file mode 100644 index 0000000..60cfe9f --- /dev/null +++ b/_static/images/logo_jupyterhub.svg @@ -0,0 +1 @@ +logo_jupyterhubHub diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..250f566 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/locales/ar/LC_MESSAGES/booktheme.mo b/_static/locales/ar/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..15541a6a375f93efed3f410c2f892174ba91aaa0 GIT binary patch literal 1541 zcmZvaJ!}+56vrn40$lhsA5n;v39lh z&UUPnK|(?lfROD&7suGxxK0yMQ@o*|gesy+5vu&(?mBh?qn-WTn|=G<|NZw~b#1&Y zus*}?#(shQ752{`;fA&4V5qyTPS`e-!60i}(%5{r(0^;D!zP`#V66yFspV7<>kvF5*86z5`j$ z=8ez}?gu^a8}Li;DtHLIQScsk0P*i2&-V)CK7WC%Q*07qAJ7GU4juvd{a%p0tQWim zeu4N7$oY#!{2XK-Ul-?ZLAIP{VE@?5Oee^5uV0WLc46~8yjT}6*2P}4uiOhI#i!V; zXZ>RTx%Xyl*phu;(K~`m+PV^FjkZeL1V5sYI1K7moHI9c!}v9+ja5U&{2;G|4YhWh zm^7}c{~g+Tn8?Tvl<2F47Nu9i{l>4L9=6uy?FAD0FiY3w(=eiIKTWvQbqOe&{(Wd5^qM9YH}dGcsaNzja& zq-k29Wt#nO;9At7wwrWQc-|J&abpO^Bu%@f8>dB@7kE5QPu!GiO4q{asH8bJN^P3Y zvv7uYJM=8C@P0OzYSB}gLot+ZNt#(-bAo@Zj6?Yfp?anYnoPQR?;I# z{we#%LHPn31obOfkF`-+I9KUX>gUj zW@~ literal 0 HcmV?d00001 diff --git a/_static/locales/ar/LC_MESSAGES/booktheme.po b/_static/locales/ar/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..edae2ec --- /dev/null +++ b/_static/locales/ar/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "موضوع بواسطة" + +msgid "Open an issue" +msgstr "افتح قضية" + +msgid "Contents" +msgstr "محتويات" + +msgid "Download notebook file" +msgstr "تنزيل ملف دفتر الملاحظات" + +msgid "Sphinx Book Theme" +msgstr "موضوع كتاب أبو الهول" + +msgid "Fullscreen mode" +msgstr "وضع ملء الشاشة" + +msgid "Edit this page" +msgstr "قم بتحرير هذه الصفحة" + +msgid "By" +msgstr "بواسطة" + +msgid "Copyright" +msgstr "حقوق النشر" + +msgid "Source repository" +msgstr "مستودع المصدر" + +msgid "previous page" +msgstr "الصفحة السابقة" + +msgid "next page" +msgstr "الصفحة التالية" + +msgid "Toggle navigation" +msgstr "تبديل التنقل" + +msgid "repository" +msgstr "مخزن" + +msgid "suggest edit" +msgstr "أقترح تحرير" + +msgid "open issue" +msgstr "قضية مفتوحة" + +msgid "Launch" +msgstr "إطلاق" + +msgid "Print to PDF" +msgstr "طباعة إلى PDF" + +msgid "By the" +msgstr "بواسطة" + +msgid "Last updated on" +msgstr "آخر تحديث في" + +msgid "Download source file" +msgstr "تنزيل ملف المصدر" + +msgid "Download this page" +msgstr "قم بتنزيل هذه الصفحة" diff --git a/_static/locales/bg/LC_MESSAGES/booktheme.mo b/_static/locales/bg/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..da95120037f8d7c52ad1f166a7682ea55ca47a01 GIT binary patch literal 1708 zcmaKqOKcQJ5QaOv0vkhkhC?jT2nh&cNkBwFYxY90B_t3AOpcMpyUpy7b@wpSL+}lZ zc_s=RKte*|C2`<_7URcy7jLdPR->G9h;qvTamgjhjlX8bj}R-P?fIs=y6dm{dw*ZQ z?5@DG8KWEHSBxzfKYoB0o|Q|4z)!5gYX#T^t^_xLtH5sX6L34Y5iEo2!IR(`P=OzV zHs>hFdG3I#!TVqr_zYYJPUie2U;izi{|U0*KVSh|x->h#2IP4+$a!{vO>jTB41AmO zFOci|8~haPLhws)C%7B@Hs=rEKFpioR`3nD2VA{8JAV*le@=j0?>TT6cp2OVJ_ot4 z*WiBe50LY0LeuQ=S0K-igY45ea0fUFvgOv1JgO3NWrRpO`@TbYDa&#J04 z8uLU~YT|f^4W5=k94AWjM}bBXBl{2ciBp+gq(T!1)p!vCDOMX z%z7FyzF${Td*=h+vjIf3x?r>F4C`bfVWiFnCdtcQkUma)U!h8cPEd+Dt17m5q+0w& zMKQ9KWTsza{bH(IICkV%?|gjko-YcyvBiPmP?e-b0iTC;FVH=*QuCr%+4AXuzT$!T zeUYc*Gb$?f>WZlb+AqligMlp^^|YVB*ODCc3;p#Z^6JGt6Ai^Bsl#*{m-qF^?6bU6 z%dKU(_p_dYpa*V5&_n77dhBk}xVz~t(j+x#hMF`X=r)bH5$d>$?h>`ABk5bs2r;-dTfq#Q2#?t@q|9teP3*uNPWy^ACfqd~8<8}Y{+a1%CJzCK zxEruG6KALRIVJ-U$3Yy!~NpG7AK|w8QyPuG1485SvTmo%i zrHNb3JL61fEcXDLQBPwL`;mLLOPayeL#0F0B5ju4Yr5-c6aTq5cjf(V=MS}!0~aLI KlK*|VZ0$SA#iddJ literal 0 HcmV?d00001 diff --git a/_static/locales/bg/LC_MESSAGES/booktheme.po b/_static/locales/bg/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..1f363b9 --- /dev/null +++ b/_static/locales/bg/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Тема от" + +msgid "Open an issue" +msgstr "Отворете проблем" + +msgid "Contents" +msgstr "Съдържание" + +msgid "Download notebook file" +msgstr "Изтеглете файла на бележника" + +msgid "Sphinx Book Theme" +msgstr "Тема на книгата Sphinx" + +msgid "Fullscreen mode" +msgstr "Режим на цял екран" + +msgid "Edit this page" +msgstr "Редактирайте тази страница" + +msgid "By" +msgstr "От" + +msgid "Copyright" +msgstr "Авторско право" + +msgid "Source repository" +msgstr "Хранилище на източника" + +msgid "previous page" +msgstr "предишна страница" + +msgid "next page" +msgstr "Следваща страница" + +msgid "Toggle navigation" +msgstr "Превключване на навигацията" + +msgid "repository" +msgstr "хранилище" + +msgid "suggest edit" +msgstr "предложи редактиране" + +msgid "open issue" +msgstr "отворен брой" + +msgid "Launch" +msgstr "Стартиране" + +msgid "Print to PDF" +msgstr "Печат в PDF" + +msgid "By the" +msgstr "По" + +msgid "Last updated on" +msgstr "Последна актуализация на" + +msgid "Download source file" +msgstr "Изтеглете изходния файл" + +msgid "Download this page" +msgstr "Изтеглете тази страница" diff --git a/_static/locales/bn/LC_MESSAGES/booktheme.mo b/_static/locales/bn/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6b96639b726a2fa959a6419b6f8b7e0dfcce33ae GIT binary patch literal 1646 zcmbV~&5IOA7>8S2xE{WN>)mqrjbP_+ zD|`%n|9`+8@Gtlc{Cs5;eF=|2zkdOGUHYZ{3U0$*$xxrd?Ipj1NbvXay{#>+)sQwK zLc@BGr=Q8s@3s2pVyti%e$UVEm)Gmv@K$Kxb@iIkGQ)QH3Dc6%KAm>6q}ejje*L3r z>$oA5HgZzyAH?ybE$6p$-O1{5(WYr7xk%%tj7A!XA>+Uti*qA7X(KkWA+(Cd;*P4f zqC=@vB32^F^Nx(hvqTZ3#rXcw=x~uglc~-VqqA;wIBg~Bl-TQgnP|xqG73*IS+qW( zo6WWqDn6MsW0O!s$y282M*BKNku;Mh6WuA>9MAOkvTmve8r7pR%ZaLqqE6Ml~R{3$6RYz1^ zHxkvXiQSWlsf@*{*+H+Gm{gVVb|;J5)lr?D$ZJBS!OVxh8WP3p@HQnr8y3617^+0h zTGzYm>~GFKb#|8L(pyu`-gfp`;o|IhXQy$z<$9NR^WnYI&Q1wu?}S90&tc32?JEMg4wtZV(;LB0u<-^*y2)npB|JLL@f}SDrcO%Hi&xc%8I{oPgE$%7j?Kgl1>Fz ze@F9IjWZ|r@GsvuUE*t^AN05zoTs2{kFZmI~m25V-8`&>S^dPTx z$^cEyl^jJ+?oOKAsWhagj`qI>dC8~bzq_0hZSgC)LsF@U6+9F=tR`Ky;!WHMs_vF; z;&hv=3*2(}kGreju(wh1_KV>qMpKtu5HHORr>y#KY7MM6T^uJ&R^K(T z4hABYyJ6tQiOxVI^L*F1qO_S8am=vBunT>6i=$ATZdb3f&v8VJ2BK9Ft@hoIsQAhin!}wxzs(N*6pVu~DVqb08$hD1)Yjm|` zLS;tVxWMJrDAJYrr0_baPC1|EHL_WMn2%o?qrvC+h@~^*GMofV4`)o0LtLbidwpll9h6X)!5Y za@FKiW0X*mn3iX1k|l^w_?&_QX>NDCJM7-fGBbN{ zu90Yv ze2zJT`3vTkm``?L!Pxha5O~CXEFXgh!F}K{a6dQ$o&?W;$H6Xm6ub={0u}ff7#cnT z+0QfZQ*aGD2(E)iz#kj_+}M9>_J4vL?;Y3zckiz69|Czl1G1m9;7jl_xEK7Z;olA4 zfrnxL7yKGLyhn&Hz$@Tsa2Y%S-Uqp^$KWaO2ax0Z1af_E!2{s0AfNlAvHt_IJ_it- z&m9L@hqKN83dlMwfSm7Lkn7GsmYi+Vd*Crl_RV$g90)P3f&KE}ym+u5)|z$Y8sKu8 zBlmXaVEsAAPcR|Fw7=ro7!QS1iR;z`WrD|#V(fI1264kaFu9d685`8V+Kg6ouC~qI zmM&5s7(=Q(6*5s`F4h6A|KHA+dF~^pl%b)GmAEN=pt6W%P%&A9eQBapEEYH*4QcO7 zC3;R9II+~bF)xtNkjEETCX59u1`)=$+?iRns%x~9HOl3bCIBb~^g5yYs6 zq0Y{7oH|J1)JWU1NqdKTUnYq{mI{?16?;!bp}i2dzgNz~TZiiSZI0ibMsD3&xHY%^ z{^Gd{twz{(e_W^z1tf63$fY*36s6L66}rp)`S#WAb50t+qFj5Cn}I4y~Kg zBqen1P~=;^ymT^e&s#V29Wupq>${g`ss7ph#?V(?y7=vEOZ04vuGQ<}z{^y~66*P^ zno!}Y$w-Q&P)$-}%RuPqz&a}Is;MT!%#Nz{)Y2fgS=pT0Tnmc4rqvjN;Qj07&Ihjp zVvrB;Z*XvQD zxu;CEAr^xgZM{%PrEqqD`$N&!KBKt)RPHp%tyA?Xw}`Se37c!8k8_eTqth`htw3AZ zm~1S1a92z`@RU9C@Xu~NJj63$#L LZS{&p7>oY^Ev$2? literal 0 HcmV?d00001 diff --git a/_static/locales/cs/LC_MESSAGES/booktheme.po b/_static/locales/cs/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..afecd9e --- /dev/null +++ b/_static/locales/cs/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Téma od" + +msgid "Open an issue" +msgstr "Otevřete problém" + +msgid "Contents" +msgstr "Obsah" + +msgid "Download notebook file" +msgstr "Stáhnout soubor poznámkového bloku" + +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" + +msgid "Fullscreen mode" +msgstr "Režim celé obrazovky" + +msgid "Edit this page" +msgstr "Upravit tuto stránku" + +msgid "By" +msgstr "Podle" + +msgid "Copyright" +msgstr "autorská práva" + +msgid "Source repository" +msgstr "Zdrojové úložiště" + +msgid "previous page" +msgstr "předchozí stránka" + +msgid "next page" +msgstr "další strana" + +msgid "Toggle navigation" +msgstr "Přepnout navigaci" + +msgid "repository" +msgstr "úložiště" + +msgid "suggest edit" +msgstr "navrhnout úpravy" + +msgid "open issue" +msgstr "otevřené číslo" + +msgid "Launch" +msgstr "Zahájení" + +msgid "Print to PDF" +msgstr "Tisk do PDF" + +msgid "By the" +msgstr "Podle" + +msgid "Last updated on" +msgstr "Naposledy aktualizováno" + +msgid "Download source file" +msgstr "Stáhněte si zdrojový soubor" + +msgid "Download this page" +msgstr "Stáhněte si tuto stránku" diff --git a/_static/locales/da/LC_MESSAGES/booktheme.mo b/_static/locales/da/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f43157d70c63ff21b4385dc36cb73f5b14eb6b01 GIT binary patch literal 1304 zcmZ9KyKmG$5XKi02pkaJ&;+qGJPH$nD9}aMKoTh;K$JVu@15uDO?nzn&U>A+XM4Phfw-zKH#7 zA8uHO_6vba9LDV+coaMYo(2zt6W}@UGI$1TfTzGEa2zD?I2bB!f*j{Lcno|A9tB^6 zC&9NBKUV%PmHi!Ly?>3CQ(qR(uY!{wt8{eFL)2d+-GK0XzbJ2D#pEAm_OQa=bqv z>yEt{#_?I3XFI&O|2#v^6KxpGSKQga zB|}Q$t~G&7@Oa2KoKDgpX6$2=SrtoT1GTMPm0g|DuG`zfb!d+>q}t0|B_w8J9T57T zIag$v?>HhOdp0JqpnQ-;9;-mHv<7xzI;nV=;{#=+_P!vo=(Ir)D;H<{wy4q`3h#>~ zA!JFY1gY2+>V#-Mj+V)JM61hEKVto8pj^8@e}8uO{nYgvwW_gEYa^$+3`k%y&y+UP zvXd(3DKs9n=AzrX-#KM`ms~V!IyTlOsmt4K9cl~8BnA3fm$9lXW`$E(G-qAU*QLn^ zrf=MwmgQsPs*#r(a_ZW2O)OJ9*z+b%Z59igr)teR+B0C^wn>Bm@6LBsXEFWfiOCp} zUSoVqXi7p(4!JPl*su1tkyFr_56Z-%sbe(I4#o^g{#-PJazXT;wvB`*ceb5TPdvg| zr`IHo4yJvN)iV_A{*4(42I?u%!cD5KXs+sR7@qEf{)q=$-v3Mo~pNRgs6dB45A_~g;fK07nJ@Atd!PtN@)FuuTCzw-;3=>No&-0+;~;^bfwAQikaeDcpMpPw z$G{ih3Gh|R-`o9n?fMUp?fnCGz(a>7-ya8gy#TV#x8N_}HSiTa&9^9*#YUsChPKG9Ug3-wb>5ahNSoell`9^ zoCmHU$Afe<^%ebHTryT9ZaN#u#(;-<*Xy#1V#z(Q#;HPD7is9+wj60gd)vV!pVPk0 zSm_{ZRgzdPbcFPDxsr?txhJx6>8J8fdK zt=*csGQxpNwNctG%DhrOQ0(2=TFGwgz2}t;Bl6j@&0V2w*_AhjI(F8SEfezEl?8P+ zO!CTPE6$HYSK7K+hThdhIeF}TXXUw`ymDc&BbHF5O7u~OM`4rK)5Mn;Zwdn zburuA-y2y!aDY4^_ YHT)aX(-~_xf`&nTEYd88)4;9x4>RdeS^xk5 literal 0 HcmV?d00001 diff --git a/_static/locales/de/LC_MESSAGES/booktheme.po b/_static/locales/de/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..f51d2ec --- /dev/null +++ b/_static/locales/de/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Thema von der" + +msgid "Open an issue" +msgstr "Öffnen Sie ein Problem" + +msgid "Contents" +msgstr "Inhalt" + +msgid "Download notebook file" +msgstr "Notebook-Datei herunterladen" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-Buch-Thema" + +msgid "Fullscreen mode" +msgstr "Vollbildmodus" + +msgid "Edit this page" +msgstr "Bearbeite diese Seite" + +msgid "By" +msgstr "Durch" + +msgid "Copyright" +msgstr "Urheberrechte ©" + +msgid "Source repository" +msgstr "Quell-Repository" + +msgid "previous page" +msgstr "vorherige Seite" + +msgid "next page" +msgstr "Nächste Seite" + +msgid "Toggle navigation" +msgstr "Navigation umschalten" + +msgid "repository" +msgstr "Repository" + +msgid "suggest edit" +msgstr "vorschlagen zu bearbeiten" + +msgid "open issue" +msgstr "offenes Thema" + +msgid "Launch" +msgstr "Starten" + +msgid "Print to PDF" +msgstr "In PDF drucken" + +msgid "By the" +msgstr "Bis zum" + +msgid "Last updated on" +msgstr "Zuletzt aktualisiert am" + +msgid "Download source file" +msgstr "Quelldatei herunterladen" + +msgid "Download this page" +msgstr "Laden Sie diese Seite herunter" diff --git a/_static/locales/el/LC_MESSAGES/booktheme.mo b/_static/locales/el/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..fca6e9355f314677f2890f5679fd79dd67a7a5a2 GIT binary patch literal 1722 zcmZ{iPiS047{Euewt4U5n=fkKPHMz8X+JKcS{dGGPw+nU_c zCZPt>L)D-XMN9P{m<`*yO}BBoS3#I}@#Mj)Cp~!cBL2SFE!h-0?96ZHoA3Yk{@Ax; zMX{b{53_$`KhIu%fP=N`L8bVq-5d|WJ#ZJ?4|l_1_!N8@J_(C(AAASyg$6zb(>@oV z`1uSz3RmGC_yc?b-t6<2zWn$8{ZAG}N=-3*|lx#m@-51&_iV@GtlX{0B;& z|G|Us0FOuETkutwLXlsEZ^B>UVYqXrQitFhQ0g-9MK}YWfvbJC;B(wFD1G=Fz66IT z_E|X6=LsnC_o4J>9*)3IptM|SkT~LFKU;E^x(64jsmIx3FH7o|CH<3LOJ5JLNx{`F zvmIQ7ax;7w(hfIYb$phePOCsWALdpYv;G zOPqxDxMc1Trd2=DkykNltn8<_zIz?7*J?>AHYU*1VcDqDUXtp1RQ6I+)?vWC9+ax; z?Fa=g(0-ECjhcx404JfII61D)_Tt4R3KKsK<5_h!s`|lJua|GifioP~!B0M6o&VhxLBi1MZW0rDDj^PzkAoADB{_KUL1ZXW|5J z1>K9Em-u-XId|sNnX#?+BZm&>`i;#`&PJx7QxbSBs(F4es!LTbPE1;ScXB*`Y)dcp zg5;cu^J76NEc-#FppQ-YY3{TaRO_9ar-jjaZW8iNR~zWhPCd z!IGORj47br#qth1q_-xG*Y+m$QJl1ldYsi|#&y>pn)3O}2r<588%%~cb6DJv&M0zR z6Ju?!Gpp;aJ2H>n=Q;4)9QX)UBsQv>oVXExo49XqkvY35v_#)clq&D(UelG*<`bgE k?KNN}BbD^J+2#A$4_2dkCejtU)5(_TEbrUqDh*fv19*CpTMYflop9djWEuuR*>)1Ua4$Am958?gqbuT!-Hv=RLl? ztm83|e|Hk(lCvi7xt0eoxwahd<^hR9n|*n(9}lh{d$2y|1j)ji^V&Q(5ANYkOq8Lh zleoHqM}{7WYt{rZ!Q&-caXRS*F>UXd)T&q-8)(7WzFgEPZ5(@>yDt567<$^vOeG|m zu?~=4-?s8J^<76~z&terQmeydOn{H3s$Z$a!slCrhw4F8(v9dkg67!{> zqs)38tXmQDSx=k0@+!yH>Cu2hvC4%qr;bgMl%!G1I#EHx#L(SPMrYZlG|3z-YnxYL zZ<6X6Bk3-!Gg!U#kimbyhN}%YXpR zWvS9;N_Kn7c?ykNomO;Zym7(o#sxZQOml4 zuS=5^Ti>`iCCk^wX(LZG)Bqh@I0@tnvqcu0^K+ literal 0 HcmV?d00001 diff --git a/_static/locales/eo/LC_MESSAGES/booktheme.po b/_static/locales/eo/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..d72a048 --- /dev/null +++ b/_static/locales/eo/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Temo de la" + +msgid "Open an issue" +msgstr "Malfermu numeron" + +msgid "Contents" +msgstr "Enhavo" + +msgid "Download notebook file" +msgstr "Elŝutu kajeran dosieron" + +msgid "Sphinx Book Theme" +msgstr "Sfinksa Libro-Temo" + +msgid "Fullscreen mode" +msgstr "Plenekrana reĝimo" + +msgid "Edit this page" +msgstr "Redaktu ĉi tiun paĝon" + +msgid "By" +msgstr "De" + +msgid "Copyright" +msgstr "Kopirajto" + +msgid "Source repository" +msgstr "Fonto-deponejo" + +msgid "previous page" +msgstr "antaŭa paĝo" + +msgid "next page" +msgstr "sekva paĝo" + +msgid "Toggle navigation" +msgstr "Ŝalti navigadon" + +msgid "repository" +msgstr "deponejo" + +msgid "suggest edit" +msgstr "sugesti redaktadon" + +msgid "open issue" +msgstr "malferma numero" + +msgid "Launch" +msgstr "Lanĉo" + +msgid "Print to PDF" +msgstr "Presi al PDF" + +msgid "By the" +msgstr "Per la" + +msgid "Last updated on" +msgstr "Laste ĝisdatigita la" + +msgid "Download source file" +msgstr "Elŝutu fontodosieron" + +msgid "Download this page" +msgstr "Elŝutu ĉi tiun paĝon" diff --git a/_static/locales/es/LC_MESSAGES/booktheme.mo b/_static/locales/es/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..ba2ee4dc22148ed53f2aeba32c5965654d4a5a2f GIT binary patch literal 1396 zcmZ9Kzi$;s5XU#z;m3pU!zKwxjKJWQQZ~wEO{|$=X8*l*5%yj3EgEC(L#m|@E3-CIKPyLHQ^!@|o{A*Bj z4$La`8F(5z16~6q{%=5u|2}vYjQ#o}@F?a_K{@|BDEE2^ehj_>C4c{bvhUD`U0&uv z*?$p~_`U+=+!`qRz6aYpfs%6BBl;4{Ji6po;@;mNp-!U9Icai#X`&;(C9e__T(%nW zw)>mpL*DQZy5tBcRcdJ)pH3yKo8BdMDdMNz4yGuRTJ{f|^^|Mp6HmSWQEwW{d*1tzb%mTC1mCsq-qL_43=ae|t-eKOjtW>vaY#^sij18-e zU>uxyy|KKi?sj^CYadPWVO!m;OXD8uC5dfPa>c40^|ZUw#21BS?P$vslng{1KTKV8 zUUWKW55MCO;ccWl{h{a&Tjjy}+WN}g`qfKU z27O|OlkJ*EIw63|wI$;gbyiY{oW}PitHT?6`vSSR$zizSGM^h)jP#AENrPMDiUxTd zX^w*p+XS-1RUfK2(ynf&aeQr2cfaHFPM;g=s}~jrYQqQVnr;8cCiiNY181d=I%iD{ zk_k)9C=?Vlg{(ANUY4?kat==RzrVWKpj=Q5{Q{y&B&juy+NY=9viqbpt^2(7Sd&X+ zE$PfxwdF+Wo=v7AO<8KlnjOl_?lY%ZD#GnhWgz3#*VABvZk(=zpIWX+tyOg}6^wXC zsg65u%fhre9yJUf6KusrthQzv+672++(cecEV5X4sri<+xahTU@tQ2Tj8rs5BN4#T iU!*-mQ^Nsab@xTRCJqKkd{;ciD^w4Rh!536LH!R)!cyS? literal 0 HcmV?d00001 diff --git a/_static/locales/es/LC_MESSAGES/booktheme.po b/_static/locales/es/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..611834b --- /dev/null +++ b/_static/locales/es/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tema por el" + +msgid "Open an issue" +msgstr "Abrir un problema" + +msgid "Contents" +msgstr "Contenido" + +msgid "Download notebook file" +msgstr "Descargar archivo de cuaderno" + +msgid "Sphinx Book Theme" +msgstr "Tema del libro de la esfinge" + +msgid "Fullscreen mode" +msgstr "Modo de pantalla completa" + +msgid "Edit this page" +msgstr "Edita esta página" + +msgid "By" +msgstr "Por" + +msgid "Copyright" +msgstr "Derechos de autor" + +msgid "Source repository" +msgstr "Repositorio de origen" + +msgid "previous page" +msgstr "pagina anterior" + +msgid "next page" +msgstr "siguiente página" + +msgid "Toggle navigation" +msgstr "Navegación de palanca" + +msgid "repository" +msgstr "repositorio" + +msgid "suggest edit" +msgstr "sugerir editar" + +msgid "open issue" +msgstr "Tema abierto" + +msgid "Launch" +msgstr "Lanzamiento" + +msgid "Print to PDF" +msgstr "Imprimir en PDF" + +msgid "By the" +msgstr "Por el" + +msgid "Last updated on" +msgstr "Ultima actualización en" + +msgid "Download source file" +msgstr "Descargar archivo fuente" + +msgid "Download this page" +msgstr "Descarga esta pagina" diff --git a/_static/locales/et/LC_MESSAGES/booktheme.mo b/_static/locales/et/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..983b82391f499b67a9046c15d0dd8744650ad925 GIT binary patch literal 1341 zcmZ9Kzi%8x6vqb=^5gOYNC*@$VrY^ev%C-5~0q6cNoSQvQHcDIz*5N(ux8-*>yj7Nec{?37 zm@hCt!hG}w7K~$WDuqWK$8rQb2_6H_g2%xn@O|(C_#QX{&wyWnr$GYW22;<6py+%D zo&tXWPl7*z?}ESdeBSTB?Csw{@%I-v01qANzCR6$y#$KRMeqsu1$Y$v1AGho6Fdz5 z4az++J_JsIlKZFNIq(K3aoh#Zg45o90E(Y)LCNb!P;`Fo`2>{wpMm1IA0b zcW{Vb>7mpIdO`vjME%rCbb#Z zLB#9Ln`>&T^B1V~k&_R*YOAf;-PhM8wsB1jsl}?dyPU?psw`<|W?Y%XaN_8G>Z0@F zr*qN&8_XbscI- zgH4-*vBjDXO&n_1F3dRkd|7v|qf1VIJknP`Sstj{^T%OktXj#ancCu*yH}n+<|;=N z-jrOCj`OFMOqk`wddINU##;0GR19tBdvzi?e7zruw52+Aw>NT5Q%F&X%h*Lj=6f7z z8jNuq=-IE#jk<#c{m?m+L;rJ$825O_Nq(D^8CKl}zio+{#UD_z^uJ)WVl7Wi?YTr` zTRZHgk)aH+jLK4D)OfM3BNeE1ohJ(1utQX6H>rE`y-+P|2~e4t1fZw$r;!^}gUIe5 P_MW2m5}a<3ol*Y+f5$~k literal 0 HcmV?d00001 diff --git a/_static/locales/et/LC_MESSAGES/booktheme.po b/_static/locales/et/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..345088f --- /dev/null +++ b/_static/locales/et/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Teema" + +msgid "Open an issue" +msgstr "Avage probleem" + +msgid "Contents" +msgstr "Sisu" + +msgid "Download notebook file" +msgstr "Laadige sülearvuti fail alla" + +msgid "Sphinx Book Theme" +msgstr "Sfinksiraamatu teema" + +msgid "Fullscreen mode" +msgstr "Täisekraanirežiim" + +msgid "Edit this page" +msgstr "Muutke seda lehte" + +msgid "By" +msgstr "Kõrval" + +msgid "Copyright" +msgstr "Autoriõigus" + +msgid "Source repository" +msgstr "Allikahoidla" + +msgid "previous page" +msgstr "eelmine leht" + +msgid "next page" +msgstr "järgmine leht" + +msgid "Toggle navigation" +msgstr "Lülita navigeerimine sisse" + +msgid "repository" +msgstr "hoidla" + +msgid "suggest edit" +msgstr "soovita muuta" + +msgid "open issue" +msgstr "avatud küsimus" + +msgid "Launch" +msgstr "Käivitage" + +msgid "Print to PDF" +msgstr "Prindi PDF-i" + +msgid "By the" +msgstr "Autor" + +msgid "Last updated on" +msgstr "Viimati uuendatud" + +msgid "Download source file" +msgstr "Laadige alla lähtefail" + +msgid "Download this page" +msgstr "Laadige see leht alla" diff --git a/_static/locales/fi/LC_MESSAGES/booktheme.mo b/_static/locales/fi/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..d8ac054597c924e3010f629caeac1c748b7211cd GIT binary patch literal 1368 zcmZ9KJ#5r46vquMU&lA4Af!r|g^wXX5kqz52B58kprWEjclYv|xbfLh>>S*}#K;Cr ztS2O9B*cCTVrBw~l?gF1AR)y6B`K}2;{5K}=lB1=7k@o5`BGq<#+lRCrOA1CaQ!^kKlhsTrZJIH9K_^ryK`_q_#3i5+EIO9achW2 zhLpr@X9L;b@gpA=I!S|AaF48UDwfs-T6Zp!8`{wJvUg?CqyH8|s=drrLSix20jamb zrP3JRD~PP@yO_j1<%2BqSOtouvxrOEOU3;he^6Fx?@JOZg|3?XUWo3*(Ha#V+1j$!k61sdlv~SpmKV48XD?rEHI0qB!<^bOz`&KTmRqe+kV}^cf!#bT&>G1)AQnFuaA9SXR zO>~T6=Ywl@%y^W>^xt9_kNV@0^m3c4B9BMrgfh( zuVp?S>46Ru!ccTe7eieYS*GF0;G*3eAeplXnZCllffvOWA=>i5w+5yH-zgk~ao1dl zs44(@M0}Rt9Mp|iQ#yrKbuAq3msY|P`l$x0E<_Em{7-o?CS$aPMpfmO5T&sTb;r2u H66VBTf3Z^G literal 0 HcmV?d00001 diff --git a/_static/locales/fi/LC_MESSAGES/booktheme.po b/_static/locales/fi/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..d97a08d --- /dev/null +++ b/_static/locales/fi/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Teeman tekijä" + +msgid "Open an issue" +msgstr "Avaa ongelma" + +msgid "Contents" +msgstr "Sisällys" + +msgid "Download notebook file" +msgstr "Lataa muistikirjatiedosto" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-kirjan teema" + +msgid "Fullscreen mode" +msgstr "Koko näytön tila" + +msgid "Edit this page" +msgstr "Muokkaa tätä sivua" + +msgid "By" +msgstr "Tekijä" + +msgid "Copyright" +msgstr "Tekijänoikeus" + +msgid "Source repository" +msgstr "Lähteen arkisto" + +msgid "previous page" +msgstr "Edellinen sivu" + +msgid "next page" +msgstr "seuraava sivu" + +msgid "Toggle navigation" +msgstr "Vaihda navigointia" + +msgid "repository" +msgstr "arkisto" + +msgid "suggest edit" +msgstr "ehdottaa muokkausta" + +msgid "open issue" +msgstr "avoin ongelma" + +msgid "Launch" +msgstr "Tuoda markkinoille" + +msgid "Print to PDF" +msgstr "Tulosta PDF-tiedostoon" + +msgid "By the" +msgstr "Mukaan" + +msgid "Last updated on" +msgstr "Viimeksi päivitetty" + +msgid "Download source file" +msgstr "Lataa lähdetiedosto" + +msgid "Download this page" +msgstr "Lataa tämä sivu" diff --git a/_static/locales/fr/LC_MESSAGES/booktheme.mo b/_static/locales/fr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f663d39f0faa76c5b9bd504c51252eef74cca5de GIT binary patch literal 1412 zcmZ{jJ!}+56vv0pm9t{vhm&8^IIO`h6wqyy*798~B-FLeKdo!!~aIl*+ zlr)i&DosjGX-Sm+nxs!ffzqWyh>mpmzuUEJBQe_9-_FOq|NFX^vnPL27*{aoG5^N= z4D;zRyf9{tD}_g$!Rs`57MuYuf@i>a@G^KEoCEvdEO-|@2Qqjbj4hvlV&_NjBk*VN zEI0-~27hn)XS@HRUH=P;-hW^RJaMA={W(z9^Pt$d0saAg1L9Gy@DjZ@;0NGaQ2bFR zmAVF8043f<@DuPZcoBRAia+0jpMpPtqW^1q{u?N9{{>2%|FrAZpu~0hRC7KD%K8iN z5_lUFyPKf+qrt170VU-UgXB+gDSn8C=pG)BP!}*oSBAtdL+nayq9N(OOB9IrIvT`P%K$}>uh8j13v0qZ;CRi75AO3oX*L*$lK06qM@nyU^}?vGk#|? zmL^cG3s$SSi7>stTuW6IGS6&j2uDVy3#y+NH@oiA@h}HB>+f7UZR}>YK)jOup(LluVV6L*Ln| zlGjyt&G}L2k*%l8&|h4l=Cgm((zQMpFVk1~#tn>=qIhM|}`x`)$>jU}ieUbVvBn#nWIG%|r{ z@(VpgvBl*|+YE)ZQEjFj&wG?C)!uDalV>RR`l$A11nWA{5XsPS+9@lOaXon+Y2Ue0 zE>oVUGO*E>4ZSkmuAAH}>yV{N!q_?5zAzp!&O#! TA2+cw{Vw>h7Yg+MtLz81? literal 0 HcmV?d00001 diff --git a/_static/locales/fr/LC_MESSAGES/booktheme.po b/_static/locales/fr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..88f3517 --- /dev/null +++ b/_static/locales/fr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Thème par le" + +msgid "Open an issue" +msgstr "Ouvrez un problème" + +msgid "Contents" +msgstr "Contenu" + +msgid "Download notebook file" +msgstr "Télécharger le fichier notebook" + +msgid "Sphinx Book Theme" +msgstr "Thème du livre Sphinx" + +msgid "Fullscreen mode" +msgstr "Mode plein écran" + +msgid "Edit this page" +msgstr "Modifier cette page" + +msgid "By" +msgstr "Par" + +msgid "Copyright" +msgstr "droits d'auteur" + +msgid "Source repository" +msgstr "Dépôt source" + +msgid "previous page" +msgstr "page précédente" + +msgid "next page" +msgstr "page suivante" + +msgid "Toggle navigation" +msgstr "Basculer la navigation" + +msgid "repository" +msgstr "dépôt" + +msgid "suggest edit" +msgstr "suggestion de modification" + +msgid "open issue" +msgstr "signaler un problème" + +msgid "Launch" +msgstr "lancement" + +msgid "Print to PDF" +msgstr "Imprimer au format PDF" + +msgid "By the" +msgstr "Par le" + +msgid "Last updated on" +msgstr "Dernière mise à jour le" + +msgid "Download source file" +msgstr "Télécharger le fichier source" + +msgid "Download this page" +msgstr "Téléchargez cette page" diff --git a/_static/locales/hr/LC_MESSAGES/booktheme.mo b/_static/locales/hr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..eca4a1a2842830f06bd5f6235bf01d07bdd313d2 GIT binary patch literal 1402 zcmZ9KJ!~9B6vu}+kmLvh)-Bbu!YZ&sL*)#Wq0oOW>)iY z#I7UJKoJQlD$3MIh{}~uqNJdrprN2bqC$d-|Jz;1r;K*?xAU?8_kVBZ_tmrCDzsP8 z*U*1Oe;xg+XYfKhe?}=h>H=QRffvE^;1%!!xCXugz6HJv4#8FMQ}7bV;EQ1F_z)DG zZ@?G8@4$=TWAG*L$BsXD^S^cDKS7E2FW3WDR@(nBfihkLMdxksC-6Fmt?DmO{`(sg z-~WN)YvpX4?<)8j#_OQu@i8cQeBP}`P-^oC6rIQ5W$*{^dGHvNe1GZqM>qcuD0MvZ zY`gv@DF5B)#v@RCe+FI!b5KeyIf$NkxPmU8B<^y9bfYDCNE01tQa`D+)KxSg*?1KH z%T4MpwK#{4ax`^Pw+`@7ELnZzY-Ae)KI#K+iZZI(?h9Kvos)Hu_nn*4eN*x2ba2UM z{M2MDO`uvAtTuBKA$>9&rK$>r--+ODxdTQVUeRy*EU zh&bB0JyN@EJkPZYCOUthcI(pE2XsrkjZ2=fYTmTp<}`LiQ88IPH-(M{K`cLrtve@i z+90*(xpAqpy(Aw}Q7~LGGJzF0;VkyI^8P*c0crzk0e zJ5}W`eCg#p>R8HV8p8`ORd-?8+@kgmPE(NjB4ZRZpsbXo1{+%JywM17c0!7$ZS zdp+04j?>}H5RL>u+?)6`B(!QC;nQ(E%YYHwOi5)9EgF2Tundr{ymsm2Z;f2mKh k(#nYgw(f}olqHrfw@Z7L48TfWxy6y8Q4`jSBkXa^hFIaGO(a}_Drr&ngPIpyPhwkKtCW1zS zxtWoenhB;xBBn-yn24D8zwTalu&Ao9Uv<5s{`Yli#|wdR9BT&a6V_?0r`xb$Ol}tf zQ|!UE3)}}zg45t0a0WaEo&}G9U2qD#3myOoJP3w{Pe6|I9NZ7S1owfj!NcI&h98>q z&yD>JoIl_+xD%H+@5zQ2!9%dS z4R3=dU_S)+f*T;`dD8G1$o{WD_Im?z{P&Ih5#&5yK-S?0$ohz#wGPuD`<((=a*oaa zSxfd~Z8_ffK#0nR_2t3u=fQPw4%YQ37D84vb8p87>(4#hjm4TkQX%F>m@;G}=B){2 zg2zWWayrd|Sg?;xZdD?U4b-=GDA#mOTgTo;H=zFxL#DkfRZ3zp(E*`1&83*aj(wjsI*=O>qg>UnQ5~j z=eV|BMg@s#m;L%pJ)5RENuwU=R0WMBhBiW7o#i}rlG4#5ZDUjRSa=`Plu#w%B`C$N z(;&2$llB909??3o&fn(z?J9F?WqD;KhDS6Yp*?cS)QjtnT^a+xb_X5}DL&Qs{# z?=7`&Y~6Fp_%(9vMKiF8HfcxR=o0auv z_q>s3y7KCU*_ODI6J+IW*=v!hp&aNkC~@B;F{`@wufgMIJ{Em)%}J(mRd82~uKPNE zu!45VT#b~I5H)6^M@|hh?PQ`$a((5ZmR_kKRwzf4qZ=wC=HgJvLU}~a#5@JmHKeM~ zcQ+dhueyjH6-vS(Hi{zy4lKXvX09`YYnog=urAe8uFQH2W~4-u2I{*$(n5sIJAG7C T@Rc+s5Lgrh10CRyRonjp5+F85 literal 0 HcmV?d00001 diff --git a/_static/locales/id/LC_MESSAGES/booktheme.po b/_static/locales/id/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..9ffb56f --- /dev/null +++ b/_static/locales/id/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tema oleh" + +msgid "Open an issue" +msgstr "Buka masalah" + +msgid "Contents" +msgstr "Isi" + +msgid "Download notebook file" +msgstr "Unduh file notebook" + +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + +msgid "Fullscreen mode" +msgstr "Mode layar penuh" + +msgid "Edit this page" +msgstr "Edit halaman ini" + +msgid "By" +msgstr "Oleh" + +msgid "Copyright" +msgstr "hak cipta" + +msgid "Source repository" +msgstr "Repositori sumber" + +msgid "previous page" +msgstr "halaman sebelumnya" + +msgid "next page" +msgstr "halaman selanjutnya" + +msgid "Toggle navigation" +msgstr "Alihkan navigasi" + +msgid "repository" +msgstr "gudang" + +msgid "suggest edit" +msgstr "menyarankan edit" + +msgid "open issue" +msgstr "masalah terbuka" + +msgid "Launch" +msgstr "Meluncurkan" + +msgid "Print to PDF" +msgstr "Cetak ke PDF" + +msgid "By the" +msgstr "Oleh" + +msgid "Last updated on" +msgstr "Terakhir diperbarui saat" + +msgid "Download source file" +msgstr "Unduh file sumber" + +msgid "Download this page" +msgstr "Unduh halaman ini" diff --git a/_static/locales/it/LC_MESSAGES/booktheme.mo b/_static/locales/it/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..53ba476edd2df2a802917e9df402257ceca1a130 GIT binary patch literal 1403 zcmZXSJ&aXF6vsyafhY1QYQiQS8W$5EU!j1vc?Gb$351Os-eM!oynD~ycVOPkWoGWm zTH9#}m5qrNiM6q@vN55xvLLatGO@6+(D*<1-gP%Hxii0e=Htvc|2Z#C?tf~~-bG(P z{{{Vh^sipSfOhD0WAK^77~TMnfQP_S;9+n9db5tC&9bmQINr7VD9+^sD7S+ zZ-HNfN5E&`3Gn-#Klk&$_V(|f-uE{+0Qc?d&L0KUUI5k4BKQM%1;keK2Z+!7i9yf* z1s(_g1vTGe`;B=I{0KY^u7H})r~P~cRhutC&HGzW&wmGM{6B(v?m2h{{0%$^{sW!` z4;<+7S_JjnwcfrBYTWn1Q(y(ER@tjRN(zMHIBUF`R@^(uqn+2D6ew@4L zg5J|zQb*pB(DY&Nai5y1VnoTv1fhfnT;$=ca`*|y1aBki?jP#?!}jLE+O4&f-Stc7 zFAjQPha1~9k0>L63$?T2m#CQ8m^hE`ZLAKj?(U1$r%jH-6<>r>d^Mu0Q^|un)>jR5 z9TALm*F@`vt0B(QhBFUgSr)TwUH`yMh9yxlG%Xix0~y&& z3LB-cB(8l-D%nxCMbU^4uPmkzD-_D^sYeYovZ|_hYt|6+raF6N+B(TUeM703ahwOj z!*UGfp34HuR+WV4?HsPL=1>m45R2fh*HNhPRL3xNJhx_&?Yu^?zAcKo|5pQ*LIIU4 z9%X=yZ5mFd5t*`cmL{7}b7xJ=^_*qP(gmDLw)@AXu2??D^RnquqSO=xr-aR>O-k3u a)*Q3l*@6-(xNK#4xqhOgLbT*tS;gN$Zm<*V0gr*F!6RT6JPeM4`#}XB0Byp@Am^!p`@mOV z7q|)@0zW4Fn)rVt_HU5uZGb6o$Bx$f{UF;tAm=#)eg-dtd%-^-*V_PDx7aDf37`|? zeoukD;5CqS=MqLB_wxkgxVgmt1?-0X4dj{qO1J@X+@W2qe$Rs(cQvs`6FUcTpOYZ# zd6M|6Adj4TU>#hW-}7v_@AidK;vhE9mlyZXi}UiVd9FvXkushE>ug^<53aoj8)J$8 zzT$crKWU3f+%VcIZ9^RVa^Sf|D{h)8T{2EVYGYN-m<~=w|xXST6$p^DKQdw8cB>C zxj87tTJ-|uo6xf+D2p+_=;?>@I%^v*stG0HugtZ28aJ+6Qc^pUp6gf-MYMWoTj~tg zX%+DUHR+isk=>R)j9gbir9vl=V(zQFO%D~)cU2G~TSm6(r@4MQuACYk8XnlX?>m1n zl?*mLUiMW+S_rt{mmE*`%Y4xZLS?ge#s||^w&DUuhxb&F9?*GH@U)weS8|?B-Ey=W zVXhhJO{GRkQQ(x)gC>{=GgAAp8D=l_%hoY_R?FV3>^s+=67+^$;pPAU literal 0 HcmV?d00001 diff --git a/_static/locales/iw/LC_MESSAGES/booktheme.po b/_static/locales/iw/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..4ea190d --- /dev/null +++ b/_static/locales/iw/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: iw\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "נושא מאת" + +msgid "Open an issue" +msgstr "פתח גיליון" + +msgid "Contents" +msgstr "תוכן" + +msgid "Download notebook file" +msgstr "הורד קובץ מחברת" + +msgid "Sphinx Book Theme" +msgstr "נושא ספר ספינקס" + +msgid "Fullscreen mode" +msgstr "מצב מסך מלא" + +msgid "Edit this page" +msgstr "ערוך דף זה" + +msgid "By" +msgstr "על ידי" + +msgid "Copyright" +msgstr "זכויות יוצרים" + +msgid "Source repository" +msgstr "מאגר המקורות" + +msgid "previous page" +msgstr "עמוד קודם" + +msgid "next page" +msgstr "עמוד הבא" + +msgid "Toggle navigation" +msgstr "החלף ניווט" + +msgid "repository" +msgstr "מאגר" + +msgid "suggest edit" +msgstr "מציע לערוך" + +msgid "open issue" +msgstr "בעיה פתוחה" + +msgid "Launch" +msgstr "לְהַשִׁיק" + +msgid "Print to PDF" +msgstr "הדפס לקובץ PDF" + +msgid "By the" +msgstr "דרך" + +msgid "Last updated on" +msgstr "עודכן לאחרונה ב" + +msgid "Download source file" +msgstr "הורד את קובץ המקור" + +msgid "Download this page" +msgstr "הורד דף זה" diff --git a/_static/locales/ja/LC_MESSAGES/booktheme.mo b/_static/locales/ja/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..1cefd29ce3cc08792667a82dc7ff47e9843107be GIT binary patch literal 1471 zcma))U2GIp6vr=uT2=%temyktnh+I|RZ$+uHv1sbO-LX%QhlH9-p&qe?;Yo((zoth z!EFJNkCxzqu~zx0SU`c+ubA-Uv++eAe7Tv~_Q5w};+y|7GulOC;?11-%{lkn^L6K! z-gVOq>v2dQu6IDn_Xk)2*RIXZZv;v211Zik;1ak4q&&ao z_TO@S&AKd35BL)Hd%6F@2|fYNfYiq|km|n!QoJ8>{U?y}t$^hJJGcehbZ=(g z0h0bQNasgDiZ_<)lR3|UkHUThq>)oh@}pU9hR|%O@9u?E>>&uvmlpL;i{?kUXs#3! zA=v{Ey4&tWeb61=55ZW{`(?Yv@$jH7*egl~LIyrQ+;Pvb>jB%X-jWSv)wooF7*^^a zA8{ID)$FU#tBQXZgSz8$*Rlm0s5t>b|D{&KM#HaqLP$QUYJ%;x{D6mU%?d<~D+xW6 z)jE6Cg@Yxz75=BO|)yDPjO+O|NI0-c}~bwE^u;+|UZ4dMBS zR^nOyBIPfpnG5^&>>F6!-~QYSg?zBZp>bD~cz^<)cN>-?`+2o)dAX*25Q`IlO*w3@i^0SgZ zRp#5b_7~Xl$+OE7hnZ=9YND2D&Y9*#)@d&!S7*EK+UR$U{>JE*(KAMC6J0ZU+C;M^ z`q*e3JZ1ERi7p!bh0&j-o|DW(-_lp~<^OPPo;J+|qu);tEd58ke>rs)FR!$Zu=w!h z&Y7=QE_`G(9#lEWlJgUtTT#-!nao^I&VIs{Z!N}0r&&CGVrBLi!p9%ph)+&2{5I%2 zK7KuJEq2#CZ}bHdEv5a=V6`%k-R^d(Xw}Jf>8QN5e!h zBbA`3bkQ)WS=dVKSy@;~B<{I88!P_b+$$|{a=-hV^ZNe(@4NG5)%+^MSdZvHd_rtS zROaA?v3M?Hcvu@=3&Ew}VsJIs26lk!z^&jKFbl2%PlD~B0GES0VHu=655Q&M6L2Xw z0j>n66Mjh6KPU5VAnE-CQ{cRL@%?s?<{cpA*#_Ef2kG3A zWc>t4Ehi1?A9+}fAZZd{dqh6EFS_D$EB?$Vqvj_EszTqMS+R^&H z>|hBG*9E~2DXE3jK7P0*&#?=d9aa}*QCWE|l@|R-n>7qsZZHEJ ziA7vbTyRv7*q)W%4{Te&r9dUHqRxq&PWR-~XN2b?TZYH_Y0^)(lvBrgj&;rK@7cLK zl{7ZpS8_#$YZ%z&7A;41@?634e4(?a`?}KyX3lw*^v?<}-6eA>??^kt5A-`ab<~n} zfWBto^Y9)w_0g!> zVBythE}X>$!Q{z_su`ZeFjL;phL~syBFa zXVlaiX8iI$xBl9S?ljH#2qeqqHLg5*5Kc5=W8s^|_vRD}$A^$29KXrU!@=^_j5Dv6%;4cA#sHtggl>eA))${_687xQDk?6`Kc@OWFO}WOS!3uO( zjPOmFMc3|`Ymgi(M~_AsRb8*l6oj5N!k1G#oNSsg^a1i?<=NZRz?N8C9`e*ob%^~2 D6Q!<* literal 0 HcmV?d00001 diff --git a/_static/locales/ko/LC_MESSAGES/booktheme.po b/_static/locales/ko/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..6ee3d78 --- /dev/null +++ b/_static/locales/ko/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "테마별" + +msgid "Open an issue" +msgstr "이슈 열기" + +msgid "Contents" +msgstr "내용" + +msgid "Download notebook file" +msgstr "노트북 파일 다운로드" + +msgid "Sphinx Book Theme" +msgstr "스핑크스 도서 테마" + +msgid "Fullscreen mode" +msgstr "전체 화면으로보기" + +msgid "Edit this page" +msgstr "이 페이지 편집" + +msgid "By" +msgstr "으로" + +msgid "Copyright" +msgstr "저작권" + +msgid "Source repository" +msgstr "소스 저장소" + +msgid "previous page" +msgstr "이전 페이지" + +msgid "next page" +msgstr "다음 페이지" + +msgid "Toggle navigation" +msgstr "탐색 전환" + +msgid "repository" +msgstr "저장소" + +msgid "suggest edit" +msgstr "편집 제안" + +msgid "open issue" +msgstr "열린 문제" + +msgid "Launch" +msgstr "시작하다" + +msgid "Print to PDF" +msgstr "PDF로 인쇄" + +msgid "By the" +msgstr "에 의해" + +msgid "Last updated on" +msgstr "마지막 업데이트" + +msgid "Download source file" +msgstr "소스 파일 다운로드" + +msgid "Download this page" +msgstr "이 페이지 다운로드" diff --git a/_static/locales/lt/LC_MESSAGES/booktheme.mo b/_static/locales/lt/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..4468ba04bc134a84fea5e3c973461cf02c9c2da3 GIT binary patch literal 1413 zcmZvaJ*-qk6vsyag_RElKVp1=p+SgQ1!6(=Ws8Trm%IpJ!!Cq&-rn=>&feLX$$UJx zy>yfs3mYDtv7j(9R@&?)#@fol&{Y(AbXL(_rUwj`9qL(er@8vgIw=pko$cKo&XOVSm=ES z^8O^qK3oL({z?6$1#4Nz2(054oJ;=;JiGzE*_kpy=GszcBB+< zVRAov2m8<3><4U^|G(mLjYp;ti7%W@WK+ZsUk6=|lDOjTSmRV7txL4wTqQTPq1|wF zISlEQU>fNty(&qp7CIsI&UP&u6NiDw%84sTTvaj2>KHSL zUeFdvoa|j$6a9r=An&41F4Us$N7~+%m$|mVh$bZFtK3-hG;n2UNLsa}OO-T4EZt3u z>KyAVM0}tv?Q&E0p7b%7C80_}Cn&{@X_(sUMf(ENwtj7O_x!@A z=Ua`j?LqCSBNGbv%p0ZcvK)?7h?KfF2W#z1yZ3^!ag#!O)ec>uZP}5RHgsxTRkqCV zwIfYx^-K=RwAWmi#E!InzKz|B%X0Cvd)CU+U3uZ$a!agNntg;f8E)25tYny{XFsAC z9jD(SkfM$V#H6LA*|v6LHF0AnD>v~vCkoohO{LBB-b;69+sY(u|L3sMiR5g1`bhd5 zjq=k+;szC}%nlMS$9vjXC#gc)P6nF&q9-bfo{CjQZe*xbNYi^#C9ConpM%1oLFKH0 za&)0WJ=gQWZ5W!M$i7!O!aIl|0e?HQ2Ro%kmCL#^O7u6its3{(8W!QLNCjg(=>2Jsvw ClWZvf literal 0 HcmV?d00001 diff --git a/_static/locales/lt/LC_MESSAGES/booktheme.po b/_static/locales/lt/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..01be267 --- /dev/null +++ b/_static/locales/lt/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tema" + +msgid "Open an issue" +msgstr "Atidarykite problemą" + +msgid "Contents" +msgstr "Turinys" + +msgid "Download notebook file" +msgstr "Atsisiųsti nešiojamojo kompiuterio failą" + +msgid "Sphinx Book Theme" +msgstr "Sfinkso knygos tema" + +msgid "Fullscreen mode" +msgstr "Pilno ekrano režimas" + +msgid "Edit this page" +msgstr "Redaguoti šį puslapį" + +msgid "By" +msgstr "Iki" + +msgid "Copyright" +msgstr "Autorių teisės" + +msgid "Source repository" +msgstr "Šaltinio saugykla" + +msgid "previous page" +msgstr "Ankstesnis puslapis" + +msgid "next page" +msgstr "Kitas puslapis" + +msgid "Toggle navigation" +msgstr "Perjungti naršymą" + +msgid "repository" +msgstr "saugykla" + +msgid "suggest edit" +msgstr "pasiūlyti redaguoti" + +msgid "open issue" +msgstr "atviras klausimas" + +msgid "Launch" +msgstr "Paleiskite" + +msgid "Print to PDF" +msgstr "Spausdinti į PDF" + +msgid "By the" +msgstr "Prie" + +msgid "Last updated on" +msgstr "Paskutinį kartą atnaujinta" + +msgid "Download source file" +msgstr "Atsisiųsti šaltinio failą" + +msgid "Download this page" +msgstr "Atsisiųskite šį puslapį" diff --git a/_static/locales/lv/LC_MESSAGES/booktheme.mo b/_static/locales/lv/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..74aa4d8985d96a07c4c9be96f006f3b58d884342 GIT binary patch literal 1404 zcmZ9K&5ImG7{*_dsL7ZQP5eMvump*E7&XB|oMjFhcNYS?IAk~8Yi8c*sqUVtras2( zdKwT<9)#7Cr{GC*^B|r)^?-kXCk3y9;7t%O;`2^-vdb1-{p+f(exK)k=-;oN`-(7L z!d%1r1@l$R&!4~zPs;uHG2 zUH=1$um8Z;!As|eUIA~m+y%w|6qJ5G0bd5c0G|fGYu|qlzJT=-lzP8`lHs4A_&D=q zlgkxQ>Rkt~f$z861tmufO5Zssk;}JoUbN-BWGj829FU-AF-2E~^e;o|NY;|8ctc5g z22*^U9FmJ@OFxKVl@HxMz@_4p=>umY+Zgar9e9&XBW=2mZRzw_Sr>WeT%jhWmHkCxl1EW^k%TQzfIrX3xkO4V3L9xG?DPIfe<4=WtdR+$hI z)4&^xB2Eo9w`s4@^IW-LqVor|S51w*uWpOC{VC6wR(CaQdfIncRMGG) zBv*eURUdB+Oli45Wvi9v9Ia6vne84ZIht?0o$f< A2mk;8 literal 0 HcmV?d00001 diff --git a/_static/locales/lv/LC_MESSAGES/booktheme.po b/_static/locales/lv/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..993a1e4 --- /dev/null +++ b/_static/locales/lv/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Autora tēma" + +msgid "Open an issue" +msgstr "Atveriet problēmu" + +msgid "Contents" +msgstr "Saturs" + +msgid "Download notebook file" +msgstr "Lejupielādēt piezīmju grāmatiņu" + +msgid "Sphinx Book Theme" +msgstr "Sfinksa grāmatas tēma" + +msgid "Fullscreen mode" +msgstr "Pilnekrāna režīms" + +msgid "Edit this page" +msgstr "Rediģēt šo lapu" + +msgid "By" +msgstr "Autors" + +msgid "Copyright" +msgstr "Autortiesības" + +msgid "Source repository" +msgstr "Avota krātuve" + +msgid "previous page" +msgstr "iepriekšējā lapa" + +msgid "next page" +msgstr "nākamā lapaspuse" + +msgid "Toggle navigation" +msgstr "Pārslēgt navigāciju" + +msgid "repository" +msgstr "krātuve" + +msgid "suggest edit" +msgstr "ieteikt rediģēt" + +msgid "open issue" +msgstr "atklāts jautājums" + +msgid "Launch" +msgstr "Uzsākt" + +msgid "Print to PDF" +msgstr "Drukāt PDF formātā" + +msgid "By the" +msgstr "Ar" + +msgid "Last updated on" +msgstr "Pēdējoreiz atjaunināts" + +msgid "Download source file" +msgstr "Lejupielādēt avota failu" + +msgid "Download this page" +msgstr "Lejupielādējiet šo lapu" diff --git a/_static/locales/ml/LC_MESSAGES/booktheme.mo b/_static/locales/ml/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..2736e8fcf6f9e923c2403307f0b366086d37b335 GIT binary patch literal 1883 zcmbW0%ZnUE9LGydG>*^22ObnFl0!U=*`!Gj=35eWDu@Vn6%SYIC#v~L=<+PV8oUUd{}t%`e}*gYclZSS_^!ZZxSjb`_!_(p zTd=uFh;ewl;wqeG{x{qKTbqR#gE5?hpTno&U(oq&;Si6(7JLc50p0#-xD$R4pMlrl zez^G_At=eHx!OEj&F+K95`^|`3%xs|tB0$dYp$lQaXj&eABB3jp*ug}eRDN&btbLg zC_?O6*AzH~{-A|&9)JdV{ljJRVAnvQRl4{_?&D7b7KD1k z&HJ`jzT)e&M4gbqlB?mhqaXMpAZg<;-hlh5ZiX1=e36nUswzgb&SN${bnp4Gv=IQ6$P05hgaiFop^2w W+5FkQ^s?wV7=JSkIl3Km4aE({iDO&< literal 0 HcmV?d00001 diff --git a/_static/locales/ml/LC_MESSAGES/booktheme.po b/_static/locales/ml/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..81daf7c --- /dev/null +++ b/_static/locales/ml/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "പ്രമേയം" + +msgid "Open an issue" +msgstr "ഒരു പ്രശ്നം തുറക്കുക" + +msgid "Download notebook file" +msgstr "നോട്ട്ബുക്ക് ഫയൽ ഡൺലോഡ് ചെയ്യുക" + +msgid "Sphinx Book Theme" +msgstr "സ്ഫിങ്ക്സ് പുസ്തക തീം" + +msgid "Edit this page" +msgstr "ഈ പേജ് എഡിറ്റുചെയ്യുക" + +msgid "By" +msgstr "എഴുതിയത്" + +msgid "Copyright" +msgstr "പകർപ്പവകാശം" + +msgid "Source repository" +msgstr "ഉറവിട ശേഖരം" + +msgid "previous page" +msgstr "മുൻപത്തെ താൾ" + +msgid "next page" +msgstr "അടുത്ത പേജ്" + +msgid "Toggle navigation" +msgstr "നാവിഗേഷൻ ടോഗിൾ ചെയ്യുക" + +msgid "suggest edit" +msgstr "എഡിറ്റുചെയ്യാൻ നിർദ്ദേശിക്കുക" + +msgid "open issue" +msgstr "തുറന്ന പ്രശ്നം" + +msgid "Launch" +msgstr "സമാരംഭിക്കുക" + +msgid "Print to PDF" +msgstr "PDF- ലേക്ക് പ്രിന്റുചെയ്യുക" + +msgid "By the" +msgstr "എഴുതിയത്" + +msgid "Last updated on" +msgstr "അവസാനം അപ്‌ഡേറ്റുചെയ്‌തത്" + +msgid "Download source file" +msgstr "ഉറവിട ഫയൽ ഡൗൺലോഡുചെയ്യുക" + +msgid "Download this page" +msgstr "ഈ പേജ് ഡൗൺലോഡുചെയ്യുക" diff --git a/_static/locales/mr/LC_MESSAGES/booktheme.mo b/_static/locales/mr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..fe530100d7715cdc19a6f9db33a971665835f3c4 GIT binary patch literal 1674 zcma))-D_M$7>7rVU#qnriYO?KB2uYGt)hetL1>ylCBZ;a@uD{;yVJ8rH#3KG&bG~6 zRisua;ze5NO^wW!;71IF+EldSwKo+61wrPsjrLTQ<5nO9X$iPPmDi?R5_3f- z*T>{OU(0+)Eh-V7av_#JZ?debq)w0ISz70aXmzZP)flf6MT$}#$xUxiX4T6wMQMt1 z(Km0ZR-GJZC$ForB1Kb1(Zq`;L9Q`#U}kc-zxUba8xuy?O4rH!QlXl%M)kR(o922< zwmNB9se1h2{8TbJJXfZ=I;_fMQnySy*I84JF64D%I@MVZ^O|z8Y|M6hW!g=qOu1M! zr7ps>8h>F-#@F%PT0TB5_dY$=5YC=={Zr0fboPp~>pX9~wCwsPo&DVPkH=Hao^bXY zXIEYSL*AVI()HhVc3C?6MacEOvlp1GgbA^$%){9gR+l%mHiEnj&-JixH&Y;SGbt{+ z{t03z?p+g;%KlU0jXnJ;6hm+E zO4d<`2T4o{Hn?Oyg$)#jm)Q^UYaHJCp>S-t$!CBi7ej)}A>Wy>@(p%y@Lc$O&cyp1 zdP#?v^I4GaH+|g|B8k!Ldl%Wfwrg(}`)i>kl#a*D@zz$^*>a1%2AcIZ5x;fu4@Sqm A6951J literal 0 HcmV?d00001 diff --git a/_static/locales/mr/LC_MESSAGES/booktheme.po b/_static/locales/mr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..fd857bf --- /dev/null +++ b/_static/locales/mr/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "द्वारा थीम" + +msgid "Open an issue" +msgstr "एक मुद्दा उघडा" + +msgid "Download notebook file" +msgstr "नोटबुक फाईल डाउनलोड करा" + +msgid "Sphinx Book Theme" +msgstr "स्फिंक्स बुक थीम" + +msgid "Edit this page" +msgstr "हे पृष्ठ संपादित करा" + +msgid "By" +msgstr "द्वारा" + +msgid "Copyright" +msgstr "कॉपीराइट" + +msgid "Source repository" +msgstr "स्त्रोत भांडार" + +msgid "previous page" +msgstr "मागील पान" + +msgid "next page" +msgstr "पुढील पृष्ठ" + +msgid "Toggle navigation" +msgstr "नेव्हिगेशन टॉगल करा" + +msgid "suggest edit" +msgstr "संपादन सुचवा" + +msgid "open issue" +msgstr "खुला मुद्दा" + +msgid "Launch" +msgstr "लाँच करा" + +msgid "Print to PDF" +msgstr "पीडीएफवर मुद्रित करा" + +msgid "By the" +msgstr "द्वारा" + +msgid "Last updated on" +msgstr "अखेरचे अद्यतनित" + +msgid "Download source file" +msgstr "स्त्रोत फाइल डाउनलोड करा" + +msgid "Download this page" +msgstr "हे पृष्ठ डाउनलोड करा" diff --git a/_static/locales/ms/LC_MESSAGES/booktheme.mo b/_static/locales/ms/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f02603fa2522a40060bd3f1b5d65052c77530de6 GIT binary patch literal 1213 zcmZXRJ8Km|6vs!6uj@1M0TG1}Eworov@58TBL2_ajS)TU%x`DrywA6>k!K8Y7V9F`8>~xM5BFh% zd;s@@AHhT5C-5lv6+91q2g&v)I0lYF`6PH1JO$nc$*v2Y0Pldu!3W?dC>w4z_m7+N zHb`+^fGzM9NcL|*vVRZ02ETwK;L`&&w?VSo0ms4TAm#b4;b-tP&Og8l;4hH$$Kizh zUTHW1Qhptf^p`=>djwK_>)<(X03HLMfK>lZ^ZpV{}g%EROCaZxzWLzM_G6K*tH6hX%sTdt($LUZL@kZi>& z4I{%>X6M;z?cd7EIOUBUu+=J4dW+9cF1<{ak_~s>uT$@tG%Y08Vne0ED+JMU%h%Z$ zic<%vtlUs0G-K1wUB*6INTU1FI=E=_I%q^eqhYw#(!$c*-uvW@iB{KW zFSU<)gG#o!N7S2DA(WoxaVD&jzH_fPA5HD)S)tvUw9%Z7O`>$#=2Ly;TZ=-c0nKak z(zRBKU_}wl8(X?I*VXXoI=7~I{oA>w`Q;9uyguDx%Y{TQY0E^;V^w*;2yki7=)(TYV{?8_pQ^c*8Iog%4v$iD&q$RjNP literal 0 HcmV?d00001 diff --git a/_static/locales/ms/LC_MESSAGES/booktheme.po b/_static/locales/ms/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..b616d70 --- /dev/null +++ b/_static/locales/ms/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tema oleh" + +msgid "Open an issue" +msgstr "Buka masalah" + +msgid "Download notebook file" +msgstr "Muat turun fail buku nota" + +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + +msgid "Edit this page" +msgstr "Edit halaman ini" + +msgid "By" +msgstr "Oleh" + +msgid "Copyright" +msgstr "hak cipta" + +msgid "Source repository" +msgstr "Repositori sumber" + +msgid "previous page" +msgstr "halaman sebelumnya" + +msgid "next page" +msgstr "muka surat seterusnya" + +msgid "Toggle navigation" +msgstr "Togol navigasi" + +msgid "suggest edit" +msgstr "cadangkan edit" + +msgid "open issue" +msgstr "isu terbuka" + +msgid "Launch" +msgstr "Lancarkan" + +msgid "Print to PDF" +msgstr "Cetak ke PDF" + +msgid "By the" +msgstr "Oleh" + +msgid "Last updated on" +msgstr "Terakhir dikemas kini pada" + +msgid "Download source file" +msgstr "Muat turun fail sumber" + +msgid "Download this page" +msgstr "Muat turun halaman ini" diff --git a/_static/locales/nl/LC_MESSAGES/booktheme.mo b/_static/locales/nl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..e59e7ecb308a7648cd23aa6342a9ad98a61d0009 GIT binary patch literal 1356 zcmZXTJ5Los6vqcag)1TtUj+$cqf)Gju^^CJh(JODkqBZvyL;~La`(<`W@dTSmfC47 z`~-XfW8nv|v9q$Ewb8~-3*-OXUAP1%JNw%?Gxz+@WA4%Tz*~WF19KAdE9MmDt3JFi z2G0qBM-1V00UQPg!3l5(oCL3fx52Am6C4Mhfg>P+S3qC$CCGl>fS1Ad;4pXyj)5O) zey;7`>h*V!^?rj5u)n|h{RqhGNs#^A0Y8F|zya_lcoF;svhE*{ng4G|2HU zfE@n|kmKI2*9Rc$zXmzZceVWx9L4%m%`YJ5bp-OcA0YetTieIZSNl^S#~pwZ;4H`` z=N$Mv$HI25E$f~haMji1Jb17l9<0YPv;H+qxD=N#xwoeW*MWP;bwN40{S^!Qc%)BB zJTcmn_6{G#zRi--xzS!`5#mI~uCZ|uI< zDAG*t$pwyWGo=oR?puacPMao4a*|r@WQp<_L^SRBDmueDl}KS}Co^Ro_9^$SOcFwr zgiH{M*`~+`D{-(z*1_AHtn>rc54y^YwUxD{-u}$J2aUS0!RCHJbJ8P#`$euYJujnF zSx3J4d~-RN?VYnqyB67CNk=BmbTTJr!^}5Ul}<|3bx!KMv7VP!<-xMC9S1|vUApGO zd0Bln?`nCgDQBkV8|as@-IqkwS9EI1Sg6udX`Q7gMb~>RJ??afw3Uu~8!34iTBHBl zi0Od1qM24Aq+POY$n;EGCeKm6M7k&?+d-F=M@18=IxkHDla2^|PO9GX1u3ivbE1xT z+=^}4Zo{ONva*On--8-OUjI=r94V1Y}`N=IHv19Ut jbWAeLReX?b<52fDoT%;?`~gm~I(s23S;SN2irW1H>^?=m literal 0 HcmV?d00001 diff --git a/_static/locales/nl/LC_MESSAGES/booktheme.po b/_static/locales/nl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..f16f4bc --- /dev/null +++ b/_static/locales/nl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Thema door de" + +msgid "Open an issue" +msgstr "Open een probleem" + +msgid "Contents" +msgstr "Inhoud" + +msgid "Download notebook file" +msgstr "Download notebookbestand" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-boekthema" + +msgid "Fullscreen mode" +msgstr "Volledig scherm" + +msgid "Edit this page" +msgstr "bewerk deze pagina" + +msgid "By" +msgstr "Door" + +msgid "Copyright" +msgstr "auteursrechten" + +msgid "Source repository" +msgstr "Bronopslagplaats" + +msgid "previous page" +msgstr "vorige pagina" + +msgid "next page" +msgstr "volgende bladzijde" + +msgid "Toggle navigation" +msgstr "Schakel navigatie" + +msgid "repository" +msgstr "repository" + +msgid "suggest edit" +msgstr "suggereren bewerken" + +msgid "open issue" +msgstr "open probleem" + +msgid "Launch" +msgstr "Lancering" + +msgid "Print to PDF" +msgstr "Afdrukken naar pdf" + +msgid "By the" +msgstr "Door de" + +msgid "Last updated on" +msgstr "Laatst geupdate op" + +msgid "Download source file" +msgstr "Download het bronbestand" + +msgid "Download this page" +msgstr "Download deze pagina" diff --git a/_static/locales/no/LC_MESSAGES/booktheme.mo b/_static/locales/no/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6cd15c88de675226c00ca4d0430171075e5559ff GIT binary patch literal 1317 zcmZ9KJ#5r46vxeXdz6pzxm3a|d<+2!3{|TeDD*@{E2`eX#NxZWChjG6WIIQ@F#r=I zh=CaiW+cQ+7sSlefekSsA;E&g!2exRwZe-1i=UnMe;@gJZ0`$!aT;?1^9$w~%xAl> zV2tb*0*@HQvL74+N5JFYC^!M00?&abz$SPMTm}z=1ReoH&Bq}7c@7=|Ux8!bTW}nF zU-MIK->moFLDu^NHo!f5s_zejyq^Hs&w20zcpb!5@dLyoequQQ{ss?%e?g9WWG`|7 z&ww2NwR(RWJc|7Tkn_pGec+?o{vnrOx2I^Ydmn%A>ZL_zf>(PJ4kZLarm5`W=b%5)w zZL7>O-*ZGp<~Am=pnQ;J5vxG4v+R9LTr zb?c&Cq}r^>S&prfQchyH%5IfY$0kWe(x`z>RL~GHv=*x9EbCMvg`Y>jh2AfB-HRnbKxP z_EP0Mh336ZE1KHA=alg)i!%*zV<7HREar_#Z59h#6sa0`M0_gBf~5&B$u(bn(=RqnJ4d{?xCazSi7Dd36F5NEp? z<)YnpdLTAmS7{(1PP{Mcl94asi9}+1PF;uA{A!sWqQCgLP1e#J@rEvuCjIeG)u_ z_zHL&oC3+mBarlB@FchjQl1we?OzAU{{~3=--1+!&*l7gkoNrokAjC_hW4EWNq-dF z2i^p!UUxt$Ipw67YDs=blg_=fL9(w&^`%C>sF5z^AYYUllKnH&-R^8uf4W1;k81~m7!h)9ylfZ~^CgwY?O|s!8_53#eN#D}ib%4l zPdl`G0* zrR^Q^E{h@wml7v|6|*b@U!4i752bZbtMMX#mGW2nnJcq1vs2siW24t9Wnrs}c`9q% z!@$)v5lT<+ped}AzW!iwx;nnS&I;|8q^(Zrz=TRiH9p=@zH(RSC_`OqJWVR|NoGY- zoi?`RYFwxN(ABR`V3KC)moz_L=VO;ADlp!Wow9!{+QNF%d)$vmWXUlwR2&%HTrgJW19E;7l zzACcDJ`;)Rh+tW;2Q~|urlsI%&bL2qk_T%ViEOb+o5j!ziwCfPoA2cCtFji~wj$ZA z@p+raPIaI5KE$fLmvXo`p>N|Ts6=nA`!wj_O|+>xW d^Crc{P^+yKEfI-Mu31OGXlgVp$}sP%{Q=l!SrY&N literal 0 HcmV?d00001 diff --git a/_static/locales/pl/LC_MESSAGES/booktheme.po b/_static/locales/pl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..80d2c89 --- /dev/null +++ b/_static/locales/pl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Motyw autorstwa" + +msgid "Open an issue" +msgstr "Otwórz problem" + +msgid "Contents" +msgstr "Zawartość" + +msgid "Download notebook file" +msgstr "Pobierz plik notatnika" + +msgid "Sphinx Book Theme" +msgstr "Motyw książki Sphinx" + +msgid "Fullscreen mode" +msgstr "Pełny ekran" + +msgid "Edit this page" +msgstr "Edytuj tę strone" + +msgid "By" +msgstr "Przez" + +msgid "Copyright" +msgstr "prawa autorskie" + +msgid "Source repository" +msgstr "Repozytorium źródłowe" + +msgid "previous page" +msgstr "Poprzednia strona" + +msgid "next page" +msgstr "Następna strona" + +msgid "Toggle navigation" +msgstr "Przełącz nawigację" + +msgid "repository" +msgstr "magazyn" + +msgid "suggest edit" +msgstr "zaproponuj edycję" + +msgid "open issue" +msgstr "otwarty problem" + +msgid "Launch" +msgstr "Uruchomić" + +msgid "Print to PDF" +msgstr "Drukuj do PDF" + +msgid "By the" +msgstr "Przez" + +msgid "Last updated on" +msgstr "Ostatnia aktualizacja" + +msgid "Download source file" +msgstr "Pobierz plik źródłowy" + +msgid "Download this page" +msgstr "Pobierz tę stronę" diff --git a/_static/locales/pt/LC_MESSAGES/booktheme.mo b/_static/locales/pt/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..d0ddb8728e1d5ef72dddc1537f66aa32251a83c8 GIT binary patch literal 1364 zcmZ9KJ!lj`6vsyszs~RYi3A)AKVkhsL@peXm>dKW4Dqy|yM5Uk-JMxyXV09qrC4bb zE3pu<6hyS##>&dd!p6cz!N$T$|8I9gLWZ0D-MpQB@BjWY-^NCt35+9{h16S(zZ$SR;BglC^gY3_DkUjkg^8V2+RlY+YuTO%k z_iDYq0kY*B<9wX!0496Oy4Me+EOW5GJh*=z>>q1pUk_m-WvQ8UtRL(@Yuttj8%m$V z)DS=E`y_5yrAF9A~6$c zkJPKnb{@xB&k-4!*pS4W%Dl|ePxSZ1+Sg`TPO-L5pAr(~Q+BJKIyQ=8l12@5q`XEEL(9HWXSq&QBy}{>iJ+c4DOK2kgX}J`T^Gu%F2!T+4-5Z_m|FJY}CdEoncB%=^@}k z8Y^ukWUsGWM!t2s(+;k!?Q_axOXPwX)3c#AQBz*)YTuYsCd%P!Q>MPL5a&+CLEE|{ zYf6)r%dB;ILRNoUXN)}2l9$d-G{iJ)q}Wy`Tzm+v2(=>^C{+#@RV=2IURF*jcR$wy zD??aTpZLaCOMFYpAW1l*WLmt4v{B_@b0}L2&D+qT-&mnh(n=I7vDb-`%I7N94^{E1 zcxfdiIC)dNQVDLK6_Z`3WS+>>*=|gU60=F_bfO(LmX~0$I{o6U(^gh;I@l*sE7k*N z>oXB$Fttuh#-5x(d)$^9P*fEbsVm+tv!2x!?&s);C8;hsuS6ZkWkdpvO!dtuOAFi$ LL?J8GWh3H0!r)O_ literal 0 HcmV?d00001 diff --git a/_static/locales/pt/LC_MESSAGES/booktheme.po b/_static/locales/pt/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..45ac847 --- /dev/null +++ b/_static/locales/pt/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tema por" + +msgid "Open an issue" +msgstr "Abra um problema" + +msgid "Contents" +msgstr "Conteúdo" + +msgid "Download notebook file" +msgstr "Baixar arquivo de notebook" + +msgid "Sphinx Book Theme" +msgstr "Tema do livro Sphinx" + +msgid "Fullscreen mode" +msgstr "Modo tela cheia" + +msgid "Edit this page" +msgstr "Edite essa página" + +msgid "By" +msgstr "De" + +msgid "Copyright" +msgstr "direito autoral" + +msgid "Source repository" +msgstr "Repositório fonte" + +msgid "previous page" +msgstr "página anterior" + +msgid "next page" +msgstr "próxima página" + +msgid "Toggle navigation" +msgstr "Alternar de navegação" + +msgid "repository" +msgstr "repositório" + +msgid "suggest edit" +msgstr "sugerir edição" + +msgid "open issue" +msgstr "questão aberta" + +msgid "Launch" +msgstr "Lançamento" + +msgid "Print to PDF" +msgstr "Imprimir em PDF" + +msgid "By the" +msgstr "Pelo" + +msgid "Last updated on" +msgstr "Última atualização em" + +msgid "Download source file" +msgstr "Baixar arquivo fonte" + +msgid "Download this page" +msgstr "Baixe esta página" diff --git a/_static/locales/ro/LC_MESSAGES/booktheme.mo b/_static/locales/ro/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..3c36ab1df7c589ad82614599b8c91f072a25d4a6 GIT binary patch literal 1390 zcmZ{jxo;Ce6vhX_5zG}5ZUr$kT#~s&fgHI>97~Z1L||yB#=9@;f%VL44!~(cNeM!T zzkmW7Bt%b&NVHTGv{Xn`NHmD=truc}813$F=kWX9`}X8CsJNO-Bou44rIk82E zW8ekwD0mG#0%~vyTm=t+&p?jz3S_U|fL!MXkn8*mPJmxQ*7*st&Nlprc^KsLXDc>A z&U>kv-vQZju7S_7m#oj;a^0f?p-U~+<-u`yunv38zH-h8DR$!Kd`AcS&)<;qgbk%n zVs?N_h8~GIYXX_z@lp(&&U!(#>;scql}cj+b*;T8mvv4X%iczp&|iz8r@bsxMq)nI z0il0S+cD35;)smw+mysr<%5hxssg3b8qA|fdg6M41IkG4eI&8uv_TLnms)LcbExO2 zuwDo22I6MX)8?U^<=i?w>XRs+vOBD)W3wzLY1Dn4sh}ZZ=wTRUXIW<`QaHM=ZLHEB z3GZW;5wavyf>i8XN#8^5U79nrN}tCR1WA7O>Nc7D^1!X_=B#5k}&OPu5mlqSjw% ze9!ggnq18PeE0wD`{?}IYPqW%0!Wn*zA9eO0NP-Sd!P*Z&(5Mvp+E_$mG57h;3yNf z@}T<)Q9@L?UQv!@t~hzGN|ByUi8HjaaJHLM9|{Y76xA;^5T@*t78+y)y;r5zA;cW% z6j3gq1Ltf%1{N7Mh$B&^tz>kF94xj(C8Xe$PteOytPUysU!2AvEWuE6Fj7Z>o*_qS K1txIYaExD}s9q8P literal 0 HcmV?d00001 diff --git a/_static/locales/ro/LC_MESSAGES/booktheme.po b/_static/locales/ro/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..532b3b8 --- /dev/null +++ b/_static/locales/ro/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tema de" + +msgid "Open an issue" +msgstr "Deschideți o problemă" + +msgid "Contents" +msgstr "Cuprins" + +msgid "Download notebook file" +msgstr "Descărcați fișierul notebook" + +msgid "Sphinx Book Theme" +msgstr "Tema Sphinx Book" + +msgid "Fullscreen mode" +msgstr "Modul ecran întreg" + +msgid "Edit this page" +msgstr "Editați această pagină" + +msgid "By" +msgstr "De" + +msgid "Copyright" +msgstr "Drepturi de autor" + +msgid "Source repository" +msgstr "Depozit sursă" + +msgid "previous page" +msgstr "pagina anterioară" + +msgid "next page" +msgstr "pagina următoare" + +msgid "Toggle navigation" +msgstr "Comutare navigare" + +msgid "repository" +msgstr "repertoriu" + +msgid "suggest edit" +msgstr "sugerează editare" + +msgid "open issue" +msgstr "problema deschisă" + +msgid "Launch" +msgstr "Lansa" + +msgid "Print to PDF" +msgstr "Imprimați în PDF" + +msgid "By the" +msgstr "Langa" + +msgid "Last updated on" +msgstr "Ultima actualizare la" + +msgid "Download source file" +msgstr "Descărcați fișierul sursă" + +msgid "Download this page" +msgstr "Descarcă această pagină" diff --git a/_static/locales/ru/LC_MESSAGES/booktheme.mo b/_static/locales/ru/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6b8ca41f36ebf869818399a9584cdb15619bea78 GIT binary patch literal 1722 zcmZ{iPiz!b9LJx6N>>C0{~WCHj6uL;MNkv6buUP3NFY{Oy-#-^yQABg$;>R!8?=By zpk6eZkcjo>ZEd^jw#)9`jK?>LiHQeq#*-Is-2D7zrnWZnvTr^!zxmDY_x*j}{=RSL zmx}cqdz}3X`vCjaLtI$99#)E<8sqXP+zofZ{csG9!)M_u@M&0v```y~4>WKujB{Rv zQs)c!1iS-x!|&l!u$%MeJpNn${3n!t_hA9<*pYp|2g>s}lsboC555U^!oQ&C`x}bB zF@i6^7vWp*ZFm@l@KtyR9)~}{gYZ5)1P?rt)qfX0&vOMzodC-FMW|sH%3Qy~Bk&LS zGTh71lK%!g2;Ya|(?xg`eg?&InL*;Bbw69Q%iLQRlGKxI@mH42FH8IruciMpY+9?w z*>bj97p>AWd<Owguyc8|lEQ8#P&TV@hv4PPLlNs2UpM=~=&K)EOs=bt|Yjv8id_3$EYFWp61Twd!?)O2Z^b@jo`zxOlo&{K$k6 z)k-?+UzGmEv~%I?>9doY?~lFqdLcKqSeXk!s4V?^=qzIFXM1NyDcB~ z^h;%Z?8rnx*}Ha_UXm-xW!tfr6}wJC zN81q@gr(9Fv3Bw)dp^0PldHtnY+u_Sxf$6W-wgO>O_L_|y0EwXD@jYPrM(BqO_Ddt zDEk#lk9`p%b*uDr%Zu6PU zG_bh>@urJlTp^1w`f2$AR}2{1AJVy&({OH-XdNXBVw1Appn{Ug&D59FU~!E~qO?uY z2%}Tqa+P*D{a@R!x0@kSMzqWv;2@B-rtEiw@7eZ-vn#fz?Gn!QP_`~@{!JJr^D>2; zYX|@P$s&z$lLI4H4zg!gP;s5$q8v^-E0ZiHHwb^e&1~CN%&|G1oY;Q{yqk7fcCfJk literal 0 HcmV?d00001 diff --git a/_static/locales/ru/LC_MESSAGES/booktheme.po b/_static/locales/ru/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..b718b48 --- /dev/null +++ b/_static/locales/ru/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Тема от" + +msgid "Open an issue" +msgstr "Открыть вопрос" + +msgid "Contents" +msgstr "Содержание" + +msgid "Download notebook file" +msgstr "Скачать файл записной книжки" + +msgid "Sphinx Book Theme" +msgstr "Тема книги Сфинкс" + +msgid "Fullscreen mode" +msgstr "Полноэкранный режим" + +msgid "Edit this page" +msgstr "Редактировать эту страницу" + +msgid "By" +msgstr "По" + +msgid "Copyright" +msgstr "авторское право" + +msgid "Source repository" +msgstr "Исходный репозиторий" + +msgid "previous page" +msgstr "Предыдущая страница" + +msgid "next page" +msgstr "Следующая страница" + +msgid "Toggle navigation" +msgstr "Переключить навигацию" + +msgid "repository" +msgstr "хранилище" + +msgid "suggest edit" +msgstr "предложить редактировать" + +msgid "open issue" +msgstr "открытый вопрос" + +msgid "Launch" +msgstr "Запуск" + +msgid "Print to PDF" +msgstr "Распечатать в PDF" + +msgid "By the" +msgstr "Посредством" + +msgid "Last updated on" +msgstr "Последнее обновление" + +msgid "Download source file" +msgstr "Скачать исходный файл" + +msgid "Download this page" +msgstr "Загрузите эту страницу" diff --git a/_static/locales/sk/LC_MESSAGES/booktheme.mo b/_static/locales/sk/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..59bd0ddfa341477cf5ccfdc88f4c3e6127046f7a GIT binary patch literal 1393 zcmZ9KKWrRD6vijSKyrit=ARHoJeoj?1A-``v#uc6mLesxmAg<-Am(Iw==v>7a08THd<;rm`=IpY4k&eh2g>u`gW~ryD0Tk|O5J~fa_(Nc zzXDUK|0PiBy9|o{Iw-jZpgi{xC@mLFS&OFRlMGV#=>h3w2I;R1(UBqg;w6239ut!4 z2~6=jJ)|#^@o`MFWBGp7wHbaCb5`#=8`;KyKjqAuERSl#ePRozQ?f4d$hk4?nu1TZ zgR6YP4{gTW1S)mLYBMzv(*G~Fs-g&qXSOtPDXSYgM5@YEM^4FEtSg)3YP-Y%ZOMdC zvD)#*Ld4O|#+Dj1ex6GgOmu#x24!ySK3$V+!<;9qmRA}zH4R;s6--u7O{SxPiRJy+ zq;ulan3SHU##L?XQ}Ut8GDb>9C5YnoIEmfsY4-#60ct&J{JY}cT{?GeUcb3{a{tPk zZ+F_pc89Z)dlV7it+LR@u2Yh0A2{}J54XBkPtJL5!!G;orcGRGY}TWzBNIC}w9P8? zwMSvx*(oZoi|&^5lh7kuE|;PI&N?-J`)^o!txs1juXogY6?)ZEJ1#xCtJU@>=)Bnr zU1l0t--9arjh>CyA! zZ|R}^TYP-iOeo=k_sEUBK5*0V4ADZtsjcUv$Fb6dIjHA}(Ucy4hGb%cXdqT-thpkjw8w z94mEnM;EAFODWoF<;0UM`ZS%T+8S2)Skfe~=jnmos~5@rll9m4U7_dmM!H@|Co1(H Di}h+h literal 0 HcmV?d00001 diff --git a/_static/locales/sk/LC_MESSAGES/booktheme.po b/_static/locales/sk/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..f6c423b --- /dev/null +++ b/_static/locales/sk/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Téma od" + +msgid "Open an issue" +msgstr "Otvorte problém" + +msgid "Contents" +msgstr "Obsah" + +msgid "Download notebook file" +msgstr "Stiahnite si zošit" + +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" + +msgid "Fullscreen mode" +msgstr "Režim celej obrazovky" + +msgid "Edit this page" +msgstr "Upraviť túto stránku" + +msgid "By" +msgstr "Autor:" + +msgid "Copyright" +msgstr "Autorské práva" + +msgid "Source repository" +msgstr "Zdrojové úložisko" + +msgid "previous page" +msgstr "predchádzajúca strana" + +msgid "next page" +msgstr "ďalšia strana" + +msgid "Toggle navigation" +msgstr "Prepnúť navigáciu" + +msgid "repository" +msgstr "Úložisko" + +msgid "suggest edit" +msgstr "navrhnúť úpravu" + +msgid "open issue" +msgstr "otvorené vydanie" + +msgid "Launch" +msgstr "Spustiť" + +msgid "Print to PDF" +msgstr "Tlač do PDF" + +msgid "By the" +msgstr "Podľa" + +msgid "Last updated on" +msgstr "Posledná aktualizácia dňa" + +msgid "Download source file" +msgstr "Stiahnite si zdrojový súbor" + +msgid "Download this page" +msgstr "Stiahnite si túto stránku" diff --git a/_static/locales/sl/LC_MESSAGES/booktheme.mo b/_static/locales/sl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..87bf26de683cb18c73bd23c2b4c57ef6a02545ec GIT binary patch literal 1374 zcmZ9KyKfXR5XQ}$9PjWFC=#aOAvj*5h%UN@MVlwf1j4YtMW$vtK7Sz7QA(F{dy;VIIMJx(*A* z*7ZW*5ffN8gWJKa;9hV7oB|Jk$H0AH8=M61fIC3~cY(3y6OjEp2X}z4!0q5`a1Z#l z=EvIprQUx7Io@xu0dCk(-QNlFehOqi$H8~tMQ{`NqvlU=3--Uk-Qc>7LL34o!NcHb zkab@J`TGNq^T|Ly_ZVc|FG1Eh0$KkXa4+~CYpSj^k88a!&*8idy!V z`%t7QK_wv*NO67Y#^!v|yiY#BTT52)n;gGcMsD1kzd5`1{rs78jk>VS#g&{|GD5)F z+$e2lWVfe$pxC~*IM2jgT5~@lP4MDpz zCx-(XW@_w<9uAzh?%#>APv}sH5H9X{E*5diD#H~rZm5EBHe?#D`0z|yaZ3$VV*3d1 zf=gV-^ojji64%jMWljW5^x#&@4 literal 0 HcmV?d00001 diff --git a/_static/locales/sl/LC_MESSAGES/booktheme.po b/_static/locales/sl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..9822dc5 --- /dev/null +++ b/_static/locales/sl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tema avtorja" + +msgid "Open an issue" +msgstr "Odprite številko" + +msgid "Contents" +msgstr "Vsebina" + +msgid "Download notebook file" +msgstr "Prenesite datoteko zvezka" + +msgid "Sphinx Book Theme" +msgstr "Tema knjige Sphinx" + +msgid "Fullscreen mode" +msgstr "Celozaslonski način" + +msgid "Edit this page" +msgstr "Uredite to stran" + +msgid "By" +msgstr "Avtor" + +msgid "Copyright" +msgstr "avtorske pravice" + +msgid "Source repository" +msgstr "Izvorno skladišče" + +msgid "previous page" +msgstr "Prejšnja stran" + +msgid "next page" +msgstr "Naslednja stran" + +msgid "Toggle navigation" +msgstr "Preklopi navigacijo" + +msgid "repository" +msgstr "odlagališče" + +msgid "suggest edit" +msgstr "predlagajte urejanje" + +msgid "open issue" +msgstr "odprto vprašanje" + +msgid "Launch" +msgstr "Kosilo" + +msgid "Print to PDF" +msgstr "Natisni v PDF" + +msgid "By the" +msgstr "Avtor" + +msgid "Last updated on" +msgstr "Nazadnje posodobljeno dne" + +msgid "Download source file" +msgstr "Prenesite izvorno datoteko" + +msgid "Download this page" +msgstr "Prenesite to stran" diff --git a/_static/locales/sr/LC_MESSAGES/booktheme.mo b/_static/locales/sr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..ec740f4852f3973fa72ed0c7f7cf59273b8dba41 GIT binary patch literal 1679 zcmZ{i&2Jk;7>5TMpf#n12FigTrXZCM$qB70R5|j2(nPA%iiifpt=iZVd#SU#+K*9wix4UV%CCk|YD;tzleJn!xzyAg~$`^-$R zf|BP7d;(sF`{57pDcCFcOL6{NvA++c-k-1p_w32;FeHVeLgQ7^hJ zGdzy`B&?ZThjG)5bl^0MnyI@nssG*1CaqRf3ytygl3zFKtP{mL3F=O4>e~0%Ctj_o z-VO+GJncqNV$@vddL;4n-04|$KCc&=z>nP650};Xpy_&-^(oOd-!w}`WnaCJdz$wf zjh4}#bIENuu}cxpT#j>fzSPN!1fjX)`bi;sBz=@L8U~dHCrI%>FtxaRre1!}gb~>) zID-xfGsC|hn|!@gG`2jy9GHrZ5ik|B9M_xHwWbqBCa%6aKU+RIj0+tv zS~OvK#;f^t*K1Vt$ptqqoproMLSHL73QKdXBy?KkSwCEgD%uOOZB#uzt@CB|6;B_j z>SM1?mz2F>J33uW*U}Z+wmY_)ohZA>uESZ+w$lw|zev~9H9JUG(p9@{2io4t;AJmR@7g|5U2Qwul5jS5J6+fI7K$b?*B^Gym(vvm#N%kCu@EWomq3c>6awm HD*E*gL}ZXP literal 0 HcmV?d00001 diff --git a/_static/locales/sr/LC_MESSAGES/booktheme.po b/_static/locales/sr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..e809230 --- /dev/null +++ b/_static/locales/sr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Тхеме би" + +msgid "Open an issue" +msgstr "Отворите издање" + +msgid "Contents" +msgstr "Садржај" + +msgid "Download notebook file" +msgstr "Преузмите датотеку бележнице" + +msgid "Sphinx Book Theme" +msgstr "Тема књиге Спхинк" + +msgid "Fullscreen mode" +msgstr "Режим целог екрана" + +msgid "Edit this page" +msgstr "Уредите ову страницу" + +msgid "By" +msgstr "Од стране" + +msgid "Copyright" +msgstr "Ауторско право" + +msgid "Source repository" +msgstr "Изворно спремиште" + +msgid "previous page" +msgstr "Претходна страница" + +msgid "next page" +msgstr "Следећа страна" + +msgid "Toggle navigation" +msgstr "Укључи / искључи навигацију" + +msgid "repository" +msgstr "спремиште" + +msgid "suggest edit" +msgstr "предложи уређивање" + +msgid "open issue" +msgstr "отворено издање" + +msgid "Launch" +msgstr "Лансирање" + +msgid "Print to PDF" +msgstr "Испис у ПДФ" + +msgid "By the" +msgstr "Од" + +msgid "Last updated on" +msgstr "Последње ажурирање" + +msgid "Download source file" +msgstr "Преузми изворну датотеку" + +msgid "Download this page" +msgstr "Преузмите ову страницу" diff --git a/_static/locales/sv/LC_MESSAGES/booktheme.mo b/_static/locales/sv/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..b07dc76ff21128244172d2e415cc899555d8b49d GIT binary patch literal 1365 zcmZ9Ky>App7{XZ}|d=zQVMY>d0>TJUwK!GS|siLHd(&c$~H~3(*Gryg$_j%@>d3o;WBZ2ZE>JsWR z)Jv%M7to-bct;3);v|}P!BgM~@H}`DTmmnGm%$If0eB9)11^FDo&i(GpFxiE5Ihb3 z0-geY1>Xk`IzH{jUv&LfAnW}L_P`@Y+Wm_l_m@D9a|Qez{0hWU@h8Z7e}laLACT8A z9Bq9sg6#KG@FQ>;^|ue&MB7Xc{&_$WV4fmrpPUX_NMBC1d<&HLVI2>ISM)cNT zDs_}z6(rVjoe=u}?s{cR90ejPCoU&(OT{EBpQ}W+2Kkatlh7xu)KFSXs3tL$x9(u73Q%I)?{Lst}rq*YU0sH7ocX*ad*9P6|q zKG0OVs2vT8zb&|U%F`w^(-Z1 zKF^i36kcC+hKrsX9@jHt-W)0~UWJ0RHRwJIJFG|WNq7Z50sn;0!@U&o7(5PV;9F4M{{RobKj41& z@a;;?!xtbeX@>OX{(5y6M3y47A9wJS8l@l7I~meb8I-3U@UzelnM(bH_d|LjeI~u4 zB&Ck5^3z4%s2P{8W=Y&H)T}#g2QKPq>k6~t+?)DDGB7*axf^C(bKPdqPja0`u~Boq zq#)vWxe(=r9;UshFg@+8T8M_W+gC58#_GuGB+rLNEoOcl%M6n_~Kv<@xsE9lI>D`3aM?=WN&Y5*v5);gzIlEkrgR(mY~Bt;NAGiw5m^ zmz~Tz+NOS)Pd_uI!*qJT)%&LPp{J%=sw%gu@~f)+wA%QnDo0iMT~%)Q%}sWAT~-@s zt8&XvWPPzJFLmFFj3kCLZVZKXbJg6qObpgpYXhKc{dPQvXD4*l1`&-oR|ZVWnD5S zLMPGk+4yL_MW)wWJ7GI+sWh)Cq}dE7ao%TGqX8uPK%$P%oUIVNaozG6uhIA~XTs-( z77E8j3VKIkNhd=@QrBItuMs9x^kr3kK4HautE;{2cexG}GQN=#P4;o6q{&7}8xZ++ zl w$ZZQ&WaeX;?9mtGBq&}escqTfGyJc(*W8(47(T)#0?{xcP9tpFr||Or2L57y?*IS* literal 0 HcmV?d00001 diff --git a/_static/locales/ta/LC_MESSAGES/booktheme.po b/_static/locales/ta/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..500042f --- /dev/null +++ b/_static/locales/ta/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "வழங்கிய தீம்" + +msgid "Open an issue" +msgstr "சிக்கலைத் திறக்கவும்" + +msgid "Download notebook file" +msgstr "நோட்புக் கோப்பைப் பதிவிறக்கவும்" + +msgid "Sphinx Book Theme" +msgstr "ஸ்பிங்க்ஸ் புத்தக தீம்" + +msgid "Edit this page" +msgstr "இந்தப் பக்கத்தைத் திருத்தவும்" + +msgid "By" +msgstr "வழங்கியவர்" + +msgid "Copyright" +msgstr "பதிப்புரிமை" + +msgid "Source repository" +msgstr "மூல களஞ்சியம்" + +msgid "previous page" +msgstr "முந்தைய பக்கம்" + +msgid "next page" +msgstr "அடுத்த பக்கம்" + +msgid "Toggle navigation" +msgstr "வழிசெலுத்தலை நிலைமாற்று" + +msgid "suggest edit" +msgstr "திருத்த பரிந்துரைக்கவும்" + +msgid "open issue" +msgstr "திறந்த பிரச்சினை" + +msgid "Launch" +msgstr "தொடங்க" + +msgid "Print to PDF" +msgstr "PDF இல் அச்சிடுக" + +msgid "By the" +msgstr "மூலம்" + +msgid "Last updated on" +msgstr "கடைசியாக புதுப்பிக்கப்பட்டது" + +msgid "Download source file" +msgstr "மூல கோப்பைப் பதிவிறக்குக" + +msgid "Download this page" +msgstr "இந்தப் பக்கத்தைப் பதிவிறக்கவும்" diff --git a/_static/locales/te/LC_MESSAGES/booktheme.mo b/_static/locales/te/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..0a5f4b46adfda1551ae6791c3c3782525b61be04 GIT binary patch literal 1806 zcmbu8?`s@I7{^DgzpiR+74e1QD2kPOYU&G1LO_}((2{DPsaEjK=5D&TdYxHz_mbva zT2L$M3z1kXg(AcfwAS4~Neb5f0lujqQV?VieD5FN3qLcn=UrpK7cRH^*?DH3U*CQ1 zw_V$o1=qvek8yv`{W$mAxAEY*0dI#t!Motk@Lu>Ud<6aho$p_87u?C=2jJ6i2YeYi zzX^ChJOuB9$KXz=YA)3F59{^k(B)Z$4Y&rK|263Re}o(GCUki}y(4f1KFWF>z6o!@ z*Wm7LLQKL1xEEf7ufjj!vvA~2A@;zx;Pdc3_zYZw?)**o1l&$Dhu|Lg6r6|7{snaU zU4^f}Um%kFbGaHHtXJD1WeGz1>mHu2N2iC=&RtGZchR1B$iD?W+^g&V?%L)waXOPu z(25ZI7x~Geqr`+s7qcYp6yktc&|MR?r8b3{Gv-}+Jn5=|IXAtmr8XIhPLj(sij|mb zCj}Av%jqaDWG`(;g=$Nq#dOrut&Vs-Ra!<`CVAddVkS#8PDaigm=Z@q{7j`LPYRPQ ziX&+!(I@48SIcZiolwF*xU=VM^?@zFv*l@L zDz6jwvaMLG-4f{crQm*REN}ghN#a8coKPu>p z%YTFt$m|qAXTDh&g5gT~hljsJ*ry=A+<9Nb1sA(o5-xGw{Z;?6OlS@gI#jemLQG%z zrpf6>XY=H3-bW;Qrf>v2>%ZN4n4aM|U<|2-ZBn^mBghuhM0)Dv2+@ei()B(V2&(za uuMrF7ToguSy%w`N&3+IHSt#2LVBfiP)B5iT;9Jx)h5&elIS4O(ZT|-CPABOA literal 0 HcmV?d00001 diff --git a/_static/locales/te/LC_MESSAGES/booktheme.po b/_static/locales/te/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..b1afebb --- /dev/null +++ b/_static/locales/te/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "ద్వారా థీమ్" + +msgid "Open an issue" +msgstr "సమస్యను తెరవండి" + +msgid "Download notebook file" +msgstr "నోట్బుక్ ఫైల్ను డౌన్లోడ్ చేయండి" + +msgid "Sphinx Book Theme" +msgstr "సింహిక పుస్తక థీమ్" + +msgid "Edit this page" +msgstr "ఈ పేజీని సవరించండి" + +msgid "By" +msgstr "ద్వారా" + +msgid "Copyright" +msgstr "కాపీరైట్" + +msgid "Source repository" +msgstr "మూల రిపోజిటరీ" + +msgid "previous page" +msgstr "ముందు పేజి" + +msgid "next page" +msgstr "తరువాతి పేజీ" + +msgid "Toggle navigation" +msgstr "నావిగేషన్‌ను టోగుల్ చేయండి" + +msgid "suggest edit" +msgstr "సవరించమని సూచించండి" + +msgid "open issue" +msgstr "ఓపెన్ ఇష్యూ" + +msgid "Launch" +msgstr "ప్రారంభించండి" + +msgid "Print to PDF" +msgstr "PDF కి ముద్రించండి" + +msgid "By the" +msgstr "ద్వారా" + +msgid "Last updated on" +msgstr "చివరిగా నవీకరించబడింది" + +msgid "Download source file" +msgstr "మూల ఫైల్‌ను డౌన్‌లోడ్ చేయండి" + +msgid "Download this page" +msgstr "ఈ పేజీని డౌన్‌లోడ్ చేయండి" diff --git a/_static/locales/tg/LC_MESSAGES/booktheme.mo b/_static/locales/tg/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..b21c6c6340194fdf35f7e5660deb42479c8dbff9 GIT binary patch literal 1628 zcmaiyO^6gn6vxZY=tNE8S5Q|hA#9RE$8XSGCI@vF1jR*HLCB?drtIlBTh(+|t9#pZ z_b^Dr#19Y@K@`-J?Yg?{x;qOwd8{6D@{o&%oP^*d#K?f}Wpw_pnH1Q&v@ z3%&tK*FWF}u!PNBU}wRfz%8&Zfe!dP_zn0sxE@@yD9?KJ9kAteKMU^WF zJC>CiI~?GEE4d#GJ20M-!R?)~ z>>S<1-6l7a<}oHySZKVs&CQhc{Mbyqb88w7X3RqzI{&F#*USvhMoiLrM6s>Hk4E|6 zc@o%qM9F2t?V4KSrinZf?58}t0JXzb84{b#Mr}$-{y{=+V#Xn)X(lNzTPtR6wl32O zGdJL5Bs-5oxB+T`zIGRrAt`^lPLZT?M?g!0angPB{%GR5vxHp0oR8Arqi zbZiRp&%w__8!lf*NbDpe;WA2%r?Xi$atSF8VXr;q_FB@_W_A(5kPfr&0p+;^8?eY= pg1vVOUqyoB&tBYSn9xh&7BjPW`v%MukJU629MMs5Ow+8v{s(GpYQg{j literal 0 HcmV?d00001 diff --git a/_static/locales/tg/LC_MESSAGES/booktheme.po b/_static/locales/tg/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..29b8237 --- /dev/null +++ b/_static/locales/tg/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Мавзӯъи аз" + +msgid "Open an issue" +msgstr "Масъаларо кушоед" + +msgid "Contents" +msgstr "Мундариҷа" + +msgid "Download notebook file" +msgstr "Файли дафтарро зеркашӣ кунед" + +msgid "Sphinx Book Theme" +msgstr "Сфинкс Мавзӯи китоб" + +msgid "Fullscreen mode" +msgstr "Ҳолати экрани пурра" + +msgid "Edit this page" +msgstr "Ин саҳифаро таҳрир кунед" + +msgid "By" +msgstr "Бо" + +msgid "Copyright" +msgstr "Ҳуқуқи муаллиф" + +msgid "Source repository" +msgstr "Анбори манбаъ" + +msgid "previous page" +msgstr "саҳифаи қаблӣ" + +msgid "next page" +msgstr "саҳифаи оянда" + +msgid "Toggle navigation" +msgstr "Гузаришро иваз кунед" + +msgid "repository" +msgstr "анбор" + +msgid "suggest edit" +msgstr "пешниҳод вироиш" + +msgid "open issue" +msgstr "барориши кушод" + +msgid "Launch" +msgstr "Оғоз" + +msgid "Print to PDF" +msgstr "Чоп ба PDF" + +msgid "By the" +msgstr "Бо" + +msgid "Last updated on" +msgstr "Last навсозӣ дар" + +msgid "Download source file" +msgstr "Файли манбаъро зеркашӣ кунед" + +msgid "Download this page" +msgstr "Ин саҳифаро зеркашӣ кунед" diff --git a/_static/locales/th/LC_MESSAGES/booktheme.mo b/_static/locales/th/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..abede98aa11b163e580a26b545980ace31e61ccf GIT binary patch literal 1766 zcma)*-)|K~6vqcarB^@&)CU_K663GrYB9uM>wQ7mgal$EMW46#4trN`XEwWgD~&H; zNI=2(Qi7!k28|(VOaz2Z{{sC3d@_d21Bp*Q8{hn#*{fZQQ8%6a%*>u2-*e9G?VVdL zD4xeyEM|9;NtGW4!Kz+u&BX3y#5Y_$YiD?uH$>6TSg=Km#9y)rhB| z#94;h;VRq)zl0CNTOLHf&S01Tf9_gR-TKX!nk)j@8 z$!wbssp1UphqNWmR~=a5Pgi}TUURlGwkp}=OGTFUD|OJlYX>grY3nL8@7z23cs4K_ z*QFa4UGulgs-KlQPg0|%ds#*3KaVrR!JzCG##p`JdPW^i%1RIOUQ(H!c9!$dcKhn} z9D~H_tSpB{%@&y@h|{wNXVlR;Utw}rW|b?J)X}`3*%SJJXq)Ss1*76y&(}50xilRZ zZIi_;O{$C})|{wnbx!isN%F!hW^Oo=-3VU})6}5SPzh4p+ooH!5B1t_nxZ7yq^|R~ zC4W0+ZXG#vWP0QK-WMiXqsF%9mU1(xD+Iil50cDI>25zMN>g=?&CRs;Z`c)yEsvX` zJ#D+Lm)Ueu@1M`A*5SmaL;6aLert9xERsQc#uW?Yq_%lHmYtWTbiM67YxSOv-uv8C zONI6KgI^B*v*yl!75w$!KM(#=@YjO>NCp2z@ZSZGG2hr+4E__@te@u_{+M44euZ<4 z_;qwx4(q3b|5Wzei|3W#eYCFwuf#yNf&j$Yu0#;+cXcn64J%wUT=~$4O>SO5=h=^

cLPeiV0|6qlnFzL#U0qn`*`iT?nxl@xb2Mx-{rpyeF$L|PmGL73Xj zjT&US*r9DL+Oc6=XyNi4J`IP)4~3RpiSp}N5WkMWZ=`O(hjnrBo?i;ppCMASYj{fI qV*6MBqwc03(drtRAFXAoSBd=B?a4S*sk|OB^ZqtY{YJQZ;_45RC*i9A literal 0 HcmV?d00001 diff --git a/_static/locales/th/LC_MESSAGES/booktheme.po b/_static/locales/th/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..ac65ee0 --- /dev/null +++ b/_static/locales/th/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "ธีมโดย" + +msgid "Open an issue" +msgstr "เปิดปัญหา" + +msgid "Contents" +msgstr "สารบัญ" + +msgid "Download notebook file" +msgstr "ดาวน์โหลดไฟล์สมุดบันทึก" + +msgid "Sphinx Book Theme" +msgstr "ธีมหนังสือสฟิงซ์" + +msgid "Fullscreen mode" +msgstr "โหมดเต็มหน้าจอ" + +msgid "Edit this page" +msgstr "แก้ไขหน้านี้" + +msgid "By" +msgstr "โดย" + +msgid "Copyright" +msgstr "ลิขสิทธิ์" + +msgid "Source repository" +msgstr "ที่เก็บซอร์ส" + +msgid "previous page" +msgstr "หน้าที่แล้ว" + +msgid "next page" +msgstr "หน้าต่อไป" + +msgid "Toggle navigation" +msgstr "ไม่ต้องสลับช่องทาง" + +msgid "repository" +msgstr "ที่เก็บ" + +msgid "suggest edit" +msgstr "แนะนำแก้ไข" + +msgid "open issue" +msgstr "เปิดปัญหา" + +msgid "Launch" +msgstr "เปิด" + +msgid "Print to PDF" +msgstr "พิมพ์เป็น PDF" + +msgid "By the" +msgstr "โดย" + +msgid "Last updated on" +msgstr "ปรับปรุงล่าสุดเมื่อ" + +msgid "Download source file" +msgstr "ดาวน์โหลดไฟล์ต้นฉบับ" + +msgid "Download this page" +msgstr "ดาวน์โหลดหน้านี้" diff --git a/_static/locales/tl/LC_MESSAGES/booktheme.mo b/_static/locales/tl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..8df1b73310e0c606251d1abff7e6033d1f6b273f GIT binary patch literal 1273 zcmZ{iJ#P~+7{?8ixA4}MHz7bWh@lJz6qYJggw!_(YD=U9)PcpxxsJ)jKAr8h8TbH< zl>mt^fEW=h3@|dWP{DwN#01}fk%9knmnKyup2YV%`|Ricw;%r;A9>CYr_e5-eL%a2 z_Gk|th%ew?a0@&DeghAKKfp8KZ;;mh1;@cLOg;`?0Z)LpKw38o9s}=zN5K_v43vGY z_s5_1`!7J!c@37pw;-+m2-5n`;Ct{ph(FuhSLAyJ(z;h52j75~!7cDS_y;@-j*b-m zC%}W~-v&p)J0SUA0Z)SpJPAGlY2GGy4txoc|92qy`UKMYuOOYrFAzsE2s#`3PH_Yc zHrRgZAP%9?9w{GbQ&0{H+8gOp(7q^W|Kx>&wCSAbj3LR`Ob>tV+mg-Nw3lhs_H53s zo5YHk8|!7$+74gUi5w0)8?u(%HR#*g@l+_u=40)Val5-HoaZ5pg_kk6hAoOEtD7`fpKHxt1^q`P0PmGs4|~w zYF}CuMg<%mawMf%5;BoQ3pVSzGB;`7b(Ndbym+ll7=Ee3C$CPI*s^AIft_~oQ`+M| zjoMMlC845tP)?QC3^N9mW&fLyY9mxPB*L)jFaumd3$>sZlm_4E_)y1P<99=X&7mSu zQF#bj7^^11I1!U-GjxO_E86t}@}&6i_@% literal 0 HcmV?d00001 diff --git a/_static/locales/tl/LC_MESSAGES/booktheme.po b/_static/locales/tl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..662d66c --- /dev/null +++ b/_static/locales/tl/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tema ng" + +msgid "Open an issue" +msgstr "Magbukas ng isyu" + +msgid "Download notebook file" +msgstr "Mag-download ng file ng notebook" + +msgid "Sphinx Book Theme" +msgstr "Tema ng Sphinx Book" + +msgid "Edit this page" +msgstr "I-edit ang pahinang ito" + +msgid "By" +msgstr "Ni" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Source repository" +msgstr "Pinagmulan ng imbakan" + +msgid "previous page" +msgstr "Nakaraang pahina" + +msgid "next page" +msgstr "Susunod na pahina" + +msgid "Toggle navigation" +msgstr "I-toggle ang pag-navigate" + +msgid "suggest edit" +msgstr "iminumungkahi i-edit" + +msgid "open issue" +msgstr "bukas na isyu" + +msgid "Launch" +msgstr "Ilunsad" + +msgid "Print to PDF" +msgstr "I-print sa PDF" + +msgid "By the" +msgstr "Sa pamamagitan ng" + +msgid "Last updated on" +msgstr "Huling na-update noong" + +msgid "Download source file" +msgstr "Mag-download ng file ng pinagmulan" + +msgid "Download this page" +msgstr "I-download ang pahinang ito" diff --git a/_static/locales/tr/LC_MESSAGES/booktheme.mo b/_static/locales/tr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..029ae18afb5360a8c238a052e8d3971761759d3d GIT binary patch literal 1373 zcmZ{izi%8x6vqdWKynFz!~~?sQXUOIiX{o62)3@sVLOWA2n!$dC&=i7J19yL{j6T0W2%?d)gY?96-L@67yl{`g~s z_CESD`XA_*&>y~r7uw0!mBOP=;q?Z120RHafv3P_@ICND@LjMEo(I1M&w>oT4aSc5 zLCNz7d<%R6o&kRZ&w(7D`FN2cjBk&jSbMQ3yvf}|L z^-dgb=PiL35fdohSHUH48x$WIDEhw##oq%^>ihtT&YwW>`D+*d4$8W}!FRxeF7BOZ z>s|syPtwI-fS96gfHHp*lr0wzl2>wx9;q$97n`h;HKI?N=#nP7WUs~N1$3mG*A#z? zP4-{T@J)1V%lv%Rpus~iXZ5ACk!=k4s2XpwJgPPKoh_YC$-2lp&J{E^B_9n3SNjqF zXE5d_P^B|g>#2!IeHd=kWf?}E+0w+NtTuIsR9C5voRYJMYdgx-R~05`OD2Sx)s{CF zNgQphZK&MIp`-&XC zw^i0&m&u0nldwXznunqP*($Z4{f{ku(5I`PtoGDUdp(}*+f>_seb0WLJ~cMw0*C6= zkV`YBTo=V`U#;;tvZvIAMh7gN?Gt7i9EQ538>@@sDR7=_PxgBv?;s7aXZ*rps`o&(U<3tx~U_1rqYg?0^K7|^E%RsJ#t%4f8 zo6h$Ap{&BCl*;`;;xXGI&@B^nMMIv5kwyPFiiuV?c-PnoHwMdQd*;PnG+qT~k=xL= f7*f}zXhDUuwVFPIQ2d!&RZ>YE8iRKH#ZJBgJpfrQ literal 0 HcmV?d00001 diff --git a/_static/locales/tr/LC_MESSAGES/booktheme.po b/_static/locales/tr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..d1ae723 --- /dev/null +++ b/_static/locales/tr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "Tarafından tema" + +msgid "Open an issue" +msgstr "Bir sorunu açın" + +msgid "Contents" +msgstr "İçindekiler" + +msgid "Download notebook file" +msgstr "Defter dosyasını indirin" + +msgid "Sphinx Book Theme" +msgstr "Sfenks Kitap Teması" + +msgid "Fullscreen mode" +msgstr "Tam ekran modu" + +msgid "Edit this page" +msgstr "Bu sayfayı düzenle" + +msgid "By" +msgstr "Tarafından" + +msgid "Copyright" +msgstr "Telif hakkı" + +msgid "Source repository" +msgstr "Kaynak kod deposu" + +msgid "previous page" +msgstr "önceki sayfa" + +msgid "next page" +msgstr "sonraki Sayfa" + +msgid "Toggle navigation" +msgstr "Gezinmeyi değiştir" + +msgid "repository" +msgstr "depo" + +msgid "suggest edit" +msgstr "düzenleme öner" + +msgid "open issue" +msgstr "Açık konu" + +msgid "Launch" +msgstr "Başlatmak" + +msgid "Print to PDF" +msgstr "PDF olarak yazdır" + +msgid "By the" +msgstr "Tarafından" + +msgid "Last updated on" +msgstr "Son güncelleme tarihi" + +msgid "Download source file" +msgstr "Kaynak dosyayı indirin" + +msgid "Download this page" +msgstr "Bu sayfayı indirin" diff --git a/_static/locales/uk/LC_MESSAGES/booktheme.mo b/_static/locales/uk/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..16ab78909cfbaba7fa199f47fdfc2934426ac699 GIT binary patch literal 1681 zcmZvaO>7%Q6vv0QKx#^WmXAw-X;52=V^7yhotb5Kwlue- zPJ@uD1fdWPh|e20*TKPc;zZ)a@r}d@A+B8DUJjM|f4dvvq>McK+j;xuef*#QJbLI0 zf%O{p5cY4_Z(`qj3JD;1Tdg@Fj3P=dZc__x$`9$oc*S3*fo^agnKo4Zexd+ydwLFH++H&9h3nhscvH3nP?w=Ry$GKV8 zSFn*%JcrG*?O#Zh&hS|fa-{PW7iaO4wx+~;Mq8zAjF)gW3jCTCm(0hyZoI10#;R#! zZps@$UG17A`bVb!y$DvicD z(UqEbKZJv)We~@S5))CN5yZ%eOXK2NmM>DFi34k*S#d3_1^TwU$hA$?)Ql48Q%+|+ zO&Q;>E2+I(f$!M>Nwm6cv+4}z$&!STx)qotFS{>%ocO*%l?t7p6!W2~*y81C@dFjb zh*pwW{vziurkM*@FJB$o{eEubY#|r6I5iuplC&t`Oj!2O`(TSv<;z`$dL~;A5u^%qBgBK^s=!h>rLI6)qdpT zRwLUoA{Qc+BL{@CNd#$~fM}{TM=rgzQV%n0sfS7&;BP2WpLe~9L#0ZLy!)G(eLtS} z@uTBCHyGACc;3gei{}G8S6;vi>pu7*_yBwvdd_{ zw7^~PH24qrDR`oXv3~FiknZO|ioXGV2*%(?;Gf{z;NRf8;J+FBUg~@w04eVRNO2|b zJ#Z2H7+e8i$-yFT-pWp-6LJ_r(sdMXnvv>}ceKb;S{N^_PkZu%7R~=ky6bpCK9k3g z$k@3h{CHRvY(#lWzU!1jHmVk6McE}TRVZeZy2@wWis)VkD)Nisnai;32Hdk9!Ny8% zh>H8iNjnI6>?(vD=Y%)au3|&?BFFX~vq4Jm5 zMX&72MShO7Oqazq!O}OM=}4bej#Cj_+Vieshc22(u^4vLDC*N`;`w6URZ%80h#W^i znt)vNS978mS`#JfvhV|x$n#E9i<(+#yWIJS^JCrbgJ(X=jVKuk8Cugzp2+hMT?f31 z?aE=i4%v6}~kli>l;GC(nmw+%Pw3ODBSPc^>(>sY>MA6>D7i z*MdBkUV01)pAYlSw$Ly6$pRnzWH`t4n!cr5?Pa~wuCipkz0CC=x@BmuW3xx+mX7tR z*NZtNFp)tbr@2L4}dj%B? z$~?F1e_~CYdU3r0$=I6uq5ePVO_Bn=P}riFSZ}qf6oE57w5w3K+FoX+hEW?y<4|&p zx|p)Aw=sGx%}Vw#el49X^(ARiaRizwH+vA!fH?=_BQ=JATO9Uo!rm6_g(Z9Fvrf~J ziFzY}!KTjO`w9hS|3mkKY2Z8hBsWpwH*$FgF5fip{lMp#&N|*Vkp4MHrJJsNw1%8D c^9?3>eEmE8GP@z_uy-`khW>?G>aA{%rxd0lq5uE@ literal 0 HcmV?d00001 diff --git a/_static/locales/ur/LC_MESSAGES/booktheme.po b/_static/locales/ur/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..94bcab3 --- /dev/null +++ b/_static/locales/ur/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "کے ذریعہ تھیم" + +msgid "Open an issue" +msgstr "ایک مسئلہ کھولیں" + +msgid "Download notebook file" +msgstr "نوٹ بک فائل ڈاؤن لوڈ کریں" + +msgid "Sphinx Book Theme" +msgstr "سپنکس بک تھیم" + +msgid "Edit this page" +msgstr "اس صفحے میں ترمیم کریں" + +msgid "By" +msgstr "بذریعہ" + +msgid "Copyright" +msgstr "کاپی رائٹ" + +msgid "Source repository" +msgstr "ماخذ ذخیرہ" + +msgid "previous page" +msgstr "سابقہ ​​صفحہ" + +msgid "next page" +msgstr "اگلا صفحہ" + +msgid "Toggle navigation" +msgstr "نیویگیشن ٹوگل کریں" + +msgid "suggest edit" +msgstr "ترمیم کی تجویز کریں" + +msgid "open issue" +msgstr "کھلا مسئلہ" + +msgid "Launch" +msgstr "لانچ کریں" + +msgid "Print to PDF" +msgstr "پی ڈی ایف پرنٹ کریں" + +msgid "By the" +msgstr "کی طرف" + +msgid "Last updated on" +msgstr "آخری بار تازہ کاری ہوئی" + +msgid "Download source file" +msgstr "سورس فائل ڈاؤن لوڈ کریں" + +msgid "Download this page" +msgstr "اس صفحے کو ڈاؤن لوڈ کریں" diff --git a/_static/locales/vi/LC_MESSAGES/booktheme.mo b/_static/locales/vi/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..2bb32555c3ea0dab08ed37b71cb863fbe75698c6 GIT binary patch literal 1431 zcmZvb&x;&I6vr#s{2bR9catc(#OK8%htWiG2(!#(H#@MntBVvV&v#)!JFr^_{KP>F`@nJV05}OA1gF4b;9KAkunA6pAA*NK z3BCmSiq}An^CkEqxCxGf--9oMKUe&tTK}_}KL%Ov30MQi#>)GLK%P&59Onf13wRdX z3;qSN-ajCp`xj*0y?e@hC&AY-KMlSLE>x7&{%7EEtZ#xGrw?+zzkx4+4=O$aInLi8 z=P?fP6X0=>=PmFs_%X6t9{djXqq7H;REU`#e&m%Dv(|WNyu(A%OLe5YIB!2Su?;$8te4By zUZxct%bjIsvow_dS@cRfN`gp=xsLV-{cPIG;@E|$l!jJqM~a2OdCHPb;AMxb!8|je z5+5Wu5E#l0;esOMR|IFK`YgJ+E?Oq}qlDRK7TFmDND~hLNUKno*_5*I#duC ze1pUH?uya95XS7fK6vqb$6da&5d>$e(Tqr%5FL8(*`2r*YiH`^Z>aE(?ll6i#v)Y{nLNAmS zVZLM|@+Cqff{+L(H9>+X*h#n|&YXJarQWrDsNf1G{?EIRgwekJ?VFu>|Np%Cx20*2 zVQfXTBHkmmBW^Fl3uEes3ZOb zQk?;C9XJZE1)qXHfzuJ+M)Utfc@-qRPhbpOu_D~R9;Cb#q&h!?W$*w<>pw>P43chB zQ^;m;Gx8RY{OyX^7V!v3^?n6uod9Y7@6r5Kko@OC(isEk+)qHNR|2Y~glBh97KqDQIoyw}Q#g=trLPD*?? zsWX<#ZNn6-BW-Dv{+f1r*{qv#gpj;Xr3E`?xSD%*+R!4+l|=5zREC|jvA~era$Qfb zF2|B6qIlQgPIfxfbA+v2ODm_JowhTUyu=TZx9*JS6Rh#(J>i+Um1$-Lm&OIlG_(Z~ zDK6>Iog$r3#CF65OL>v)Mde-3GzDA=oCH?XIg!%wqv`lr;kc-l;Guq;^y3ZX*zu#s zI~M-$+r2jyH8$SeZ;J%iFtEqY8kTJ5sf^*cLMP93cgEWm);WfBdxaD4kSUe6q?zDt zJ(i9gGoRpuVl zu3Y;tdw+Y?BAIRa)rh7%Q6vqb|O6z_>OFs^gI=uiz7%1XUIrvhVNR?8ES{E)zXk$;;3!9nM?rdo| zg(?BJNt;NGU78fyR1pmy`2barI!U>5;l_yr7d&hG1XmCT{?EI?hS9$L&6|(+{`20i zd%MaE;~=aX_A~4-Y~m68Ft$C)7(TWgzpda-a2vP}+zxhw2f(Mnr@$<@7d!**1_ihW z)CosHiZc!F0%yUU;1}SN;CBgsOxAx%{5nYa{sdFtmM!u9-5~khAjNqGTmxSL>HHrF z{{ks*S695g10>!1LDKhp!dDaaCwv>+k9`-U`l4+X18A zb`E+6_3&{R%F^mDJ28xp>!M(W-N{d0I-s9&TSG1P{ z75aJczeQbi0`6J1V7&!LBlM=*7rJhc_l1yrNEHO@w*t*WuV86W;7Y;|WxmMX@NmGA z+zEnEumRtZ2%`AF$v$>A&gTnH1&&t!FgxoN9eI(TAZ@v#7!s`Y=Y#Q^a>}+{!KHP< zu`TT&i4+%gtWHs$IEm+r3yumC*&X47(6$9s3cLhT)Vm_D)29mQH-#S{T878@)098m z%A7iV>U3{=|JVyJrINy?bHkpi>0X&v z1xMN$etgi;seVh^A?ljp9~9roy_FhpL*H`KeaasSGF*BsH^{!+!{cf8S;>!N`LUxt zDOTIK)fgH3eSM~5R-avJPKqIR9T5`UTRjZlMYk9ZN|&2 zSsBNyvAEKln_#AN!(3g7N>iJPqMOUL)it`->9il( zoLjEXSEEv;IrB~9#-v%f*7$q_8AyL^bp+y>8T%Uf>ocRKJlP7gdS!Fx->lK(l=-+? P`(Y`Xeqh$BP|E%Rvo4ks literal 0 HcmV?d00001 diff --git a/_static/locales/zh_TW/LC_MESSAGES/booktheme.po b/_static/locales/zh_TW/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..42b43b8 --- /dev/null +++ b/_static/locales/zh_TW/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Theme by the" +msgstr "佈景主題作者:" + +msgid "Open an issue" +msgstr "開啟議題" + +msgid "Contents" +msgstr "目錄" + +msgid "Download notebook file" +msgstr "下載 Notebook 檔案" + +msgid "Sphinx Book Theme" +msgstr "Sphinx Book 佈景主題" + +msgid "Fullscreen mode" +msgstr "全螢幕模式" + +msgid "Edit this page" +msgstr "編輯此頁面" + +msgid "By" +msgstr "作者:" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Source repository" +msgstr "來源儲存庫" + +msgid "previous page" +msgstr "上一頁" + +msgid "next page" +msgstr "下一頁" + +msgid "Toggle navigation" +msgstr "顯示或隱藏導覽列" + +msgid "repository" +msgstr "儲存庫" + +msgid "suggest edit" +msgstr "提出修改建議" + +msgid "open issue" +msgstr "公開的問題" + +msgid "Launch" +msgstr "啟動" + +msgid "Print to PDF" +msgstr "列印成 PDF" + +msgid "By the" +msgstr "作者:" + +msgid "Last updated on" +msgstr "最後更新時間:" + +msgid "Download source file" +msgstr "下載原始檔" + +msgid "Download this page" +msgstr "下載此頁面" diff --git a/_static/logo_firecamp.png b/_static/logo_firecamp.png new file mode 100644 index 0000000000000000000000000000000000000000..994a23ac8b91b88a5f04d476108e4f17a8a930ba GIT binary patch literal 105250 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

^SbU;Fgaxr(M;bT#bi1!>MFa7P;a~<;6%Q) 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 literal 0 HcmV?d00001 diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/nbsphinx-broken-thumbnail.svg b/_static/nbsphinx-broken-thumbnail.svg new file mode 100644 index 0000000..4919ca8 --- /dev/null +++ b/_static/nbsphinx-broken-thumbnail.svg @@ -0,0 +1,9 @@ + + + + diff --git a/_static/nbsphinx-code-cells.css b/_static/nbsphinx-code-cells.css new file mode 100644 index 0000000..a3fb27c --- /dev/null +++ b/_static/nbsphinx-code-cells.css @@ -0,0 +1,259 @@ +/* remove conflicting styling from Sphinx themes */ +div.nbinput.container div.prompt *, +div.nboutput.container div.prompt *, +div.nbinput.container div.input_area pre, +div.nboutput.container div.output_area pre, +div.nbinput.container div.input_area .highlight, +div.nboutput.container div.output_area .highlight { + border: none; + padding: 0; + margin: 0; + box-shadow: none; +} + +div.nbinput.container > div[class*=highlight], +div.nboutput.container > div[class*=highlight] { + margin: 0; +} + +div.nbinput.container div.prompt *, +div.nboutput.container div.prompt * { + background: none; +} + +div.nboutput.container div.output_area .highlight, +div.nboutput.container div.output_area pre { + background: unset; +} + +div.nboutput.container div.output_area div.highlight { + color: unset; /* override Pygments text color */ +} + +/* avoid gaps between output lines */ +div.nboutput.container div[class*=highlight] pre { + line-height: normal; +} + +/* input/output containers */ +div.nbinput.container, +div.nboutput.container { + display: -webkit-flex; + display: flex; + align-items: flex-start; + margin: 0; + width: 100%; +} +@media (max-width: 540px) { + div.nbinput.container, + div.nboutput.container { + flex-direction: column; + } +} + +/* input container */ +div.nbinput.container { + padding-top: 5px; +} + +/* last container */ +div.nblast.container { + padding-bottom: 5px; +} + +/* input prompt */ +div.nbinput.container div.prompt pre, +/* for sphinx_immaterial theme: */ +div.nbinput.container div.prompt pre > code { + color: #307FC1; +} + +/* output prompt */ +div.nboutput.container div.prompt pre, +/* for sphinx_immaterial theme: */ +div.nboutput.container div.prompt pre > code { + color: #BF5B3D; +} + +/* all prompts */ +div.nbinput.container div.prompt, +div.nboutput.container div.prompt { + width: 4.5ex; + padding-top: 5px; + position: relative; + user-select: none; +} + +div.nbinput.container div.prompt > div, +div.nboutput.container div.prompt > div { + position: absolute; + right: 0; + margin-right: 0.3ex; +} + +@media (max-width: 540px) { + div.nbinput.container div.prompt, + div.nboutput.container div.prompt { + width: unset; + text-align: left; + padding: 0.4em; + } + div.nboutput.container div.prompt.empty { + padding: 0; + } + + div.nbinput.container div.prompt > div, + div.nboutput.container div.prompt > div { + position: unset; + } +} + +/* disable scrollbars and line breaks on prompts */ +div.nbinput.container div.prompt pre, +div.nboutput.container div.prompt pre { + overflow: hidden; + white-space: pre; +} + +/* input/output area */ +div.nbinput.container div.input_area, +div.nboutput.container div.output_area { + -webkit-flex: 1; + flex: 1; + overflow: auto; +} +@media (max-width: 540px) { + div.nbinput.container div.input_area, + div.nboutput.container div.output_area { + width: 100%; + } +} + +/* input area */ +div.nbinput.container div.input_area { + border: 1px solid #e0e0e0; + border-radius: 2px; + /*background: #f5f5f5;*/ +} + +/* override MathJax center alignment in output cells */ +div.nboutput.container div[class*=MathJax] { + text-align: left !important; +} + +/* override sphinx.ext.imgmath center alignment in output cells */ +div.nboutput.container div.math p { + text-align: left; +} + +/* standard error */ +div.nboutput.container div.output_area.stderr { + background: #fdd; +} + +/* ANSI colors */ +.ansi-black-fg { color: #3E424D; } +.ansi-black-bg { background-color: #3E424D; } +.ansi-black-intense-fg { color: #282C36; } +.ansi-black-intense-bg { background-color: #282C36; } +.ansi-red-fg { color: #E75C58; } +.ansi-red-bg { background-color: #E75C58; } +.ansi-red-intense-fg { color: #B22B31; } +.ansi-red-intense-bg { background-color: #B22B31; } +.ansi-green-fg { color: #00A250; } +.ansi-green-bg { background-color: #00A250; } +.ansi-green-intense-fg { color: #007427; } +.ansi-green-intense-bg { background-color: #007427; } +.ansi-yellow-fg { color: #DDB62B; } +.ansi-yellow-bg { background-color: #DDB62B; } +.ansi-yellow-intense-fg { color: #B27D12; } +.ansi-yellow-intense-bg { background-color: #B27D12; } +.ansi-blue-fg { color: #208FFB; } +.ansi-blue-bg { background-color: #208FFB; } +.ansi-blue-intense-fg { color: #0065CA; } +.ansi-blue-intense-bg { background-color: #0065CA; } +.ansi-magenta-fg { color: #D160C4; } +.ansi-magenta-bg { background-color: #D160C4; } +.ansi-magenta-intense-fg { color: #A03196; } +.ansi-magenta-intense-bg { background-color: #A03196; } +.ansi-cyan-fg { color: #60C6C8; } +.ansi-cyan-bg { background-color: #60C6C8; } +.ansi-cyan-intense-fg { color: #258F8F; } +.ansi-cyan-intense-bg { background-color: #258F8F; } +.ansi-white-fg { color: #C5C1B4; } +.ansi-white-bg { background-color: #C5C1B4; } +.ansi-white-intense-fg { color: #A1A6B2; } +.ansi-white-intense-bg { background-color: #A1A6B2; } + +.ansi-default-inverse-fg { color: #FFFFFF; } +.ansi-default-inverse-bg { background-color: #000000; } + +.ansi-bold { font-weight: bold; } +.ansi-underline { text-decoration: underline; } + + +div.nbinput.container div.input_area div[class*=highlight] > pre, +div.nboutput.container div.output_area div[class*=highlight] > pre, +div.nboutput.container div.output_area div[class*=highlight].math, +div.nboutput.container div.output_area.rendered_html, +div.nboutput.container div.output_area > div.output_javascript, +div.nboutput.container div.output_area:not(.rendered_html) > img{ + padding: 5px; + margin: 0; +} + +/* fix copybtn overflow problem in chromium (needed for 'sphinx_copybutton') */ +div.nbinput.container div.input_area > div[class^='highlight'], +div.nboutput.container div.output_area > div[class^='highlight']{ + overflow-y: hidden; +} + +/* hide copy button on prompts for 'sphinx_copybutton' extension ... */ +.prompt .copybtn, +/* ... and 'sphinx_immaterial' theme */ +.prompt .md-clipboard.md-icon { + display: none; +} + +/* Some additional styling taken form the Jupyter notebook CSS */ +.jp-RenderedHTMLCommon table, +div.rendered_html table { + border: none; + border-collapse: collapse; + border-spacing: 0; + color: black; + font-size: 12px; + table-layout: fixed; +} +.jp-RenderedHTMLCommon thead, +div.rendered_html thead { + border-bottom: 1px solid black; + vertical-align: bottom; +} +.jp-RenderedHTMLCommon tr, +.jp-RenderedHTMLCommon th, +.jp-RenderedHTMLCommon td, +div.rendered_html tr, +div.rendered_html th, +div.rendered_html td { + text-align: right; + vertical-align: middle; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; +} +.jp-RenderedHTMLCommon th, +div.rendered_html th { + font-weight: bold; +} +.jp-RenderedHTMLCommon tbody tr:nth-child(odd), +div.rendered_html tbody tr:nth-child(odd) { + background: #f5f5f5; +} +.jp-RenderedHTMLCommon tbody tr:hover, +div.rendered_html tbody tr:hover { + background: rgba(66, 165, 245, 0.2); +} + diff --git a/_static/nbsphinx-gallery.css b/_static/nbsphinx-gallery.css new file mode 100644 index 0000000..365c27a --- /dev/null +++ b/_static/nbsphinx-gallery.css @@ -0,0 +1,31 @@ +.nbsphinx-gallery { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); + gap: 5px; + margin-top: 1em; + margin-bottom: 1em; +} + +.nbsphinx-gallery > a { + padding: 5px; + border: 1px dotted currentColor; + border-radius: 2px; + text-align: center; +} + +.nbsphinx-gallery > a:hover { + border-style: solid; +} + +.nbsphinx-gallery img { + max-width: 100%; + max-height: 100%; +} + +.nbsphinx-gallery > a > div:first-child { + display: flex; + align-items: start; + justify-content: center; + height: 120px; + margin-bottom: 5px; +} diff --git a/_static/nbsphinx-no-thumbnail.svg b/_static/nbsphinx-no-thumbnail.svg new file mode 100644 index 0000000..9dca758 --- /dev/null +++ b/_static/nbsphinx-no-thumbnail.svg @@ -0,0 +1,9 @@ + + + + diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..997797f --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,152 @@ +html[data-theme="light"] .highlight pre { line-height: 125%; } +html[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight .hll { background-color: #7971292e } +html[data-theme="light"] .highlight { background: #fefefe; color: #545454 } +html[data-theme="light"] .highlight .c { color: #797129 } /* Comment */ +html[data-theme="light"] .highlight .err { color: #d91e18 } /* Error */ +html[data-theme="light"] .highlight .k { color: #7928a1 } /* Keyword */ +html[data-theme="light"] .highlight .l { color: #797129 } /* Literal */ +html[data-theme="light"] .highlight .n { color: #545454 } /* Name */ +html[data-theme="light"] .highlight .o { color: #008000 } /* Operator */ +html[data-theme="light"] .highlight .p { color: #545454 } /* Punctuation */ +html[data-theme="light"] .highlight .ch { color: #797129 } /* Comment.Hashbang */ +html[data-theme="light"] .highlight .cm { color: #797129 } /* Comment.Multiline */ +html[data-theme="light"] .highlight .cp { color: #797129 } /* Comment.Preproc */ +html[data-theme="light"] .highlight .cpf { color: #797129 } /* Comment.PreprocFile */ +html[data-theme="light"] .highlight .c1 { color: #797129 } /* Comment.Single */ +html[data-theme="light"] .highlight .cs { color: #797129 } /* Comment.Special */ +html[data-theme="light"] .highlight .gd { color: #007faa } /* Generic.Deleted */ +html[data-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="light"] .highlight .gh { color: #007faa } /* Generic.Heading */ +html[data-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="light"] .highlight .gu { color: #007faa } /* Generic.Subheading */ +html[data-theme="light"] .highlight .kc { color: #7928a1 } /* Keyword.Constant */ +html[data-theme="light"] .highlight .kd { color: #7928a1 } /* Keyword.Declaration */ +html[data-theme="light"] .highlight .kn { color: #7928a1 } /* Keyword.Namespace */ +html[data-theme="light"] .highlight .kp { color: #7928a1 } /* Keyword.Pseudo */ +html[data-theme="light"] .highlight .kr { color: #7928a1 } /* Keyword.Reserved */ +html[data-theme="light"] .highlight .kt { color: #797129 } /* Keyword.Type */ +html[data-theme="light"] .highlight .ld { color: #797129 } /* Literal.Date */ +html[data-theme="light"] .highlight .m { color: #797129 } /* Literal.Number */ +html[data-theme="light"] .highlight .s { color: #008000 } /* Literal.String */ +html[data-theme="light"] .highlight .na { color: #797129 } /* Name.Attribute */ +html[data-theme="light"] .highlight .nb { color: #797129 } /* Name.Builtin */ +html[data-theme="light"] .highlight .nc { color: #007faa } /* Name.Class */ +html[data-theme="light"] .highlight .no { color: #007faa } /* Name.Constant */ +html[data-theme="light"] .highlight .nd { color: #797129 } /* Name.Decorator */ +html[data-theme="light"] .highlight .ni { color: #008000 } /* Name.Entity */ +html[data-theme="light"] .highlight .ne { color: #7928a1 } /* Name.Exception */ +html[data-theme="light"] .highlight .nf { color: #007faa } /* Name.Function */ +html[data-theme="light"] .highlight .nl { color: #797129 } /* Name.Label */ +html[data-theme="light"] .highlight .nn { color: #545454 } /* Name.Namespace */ +html[data-theme="light"] .highlight .nx { color: #545454 } /* Name.Other */ +html[data-theme="light"] .highlight .py { color: #007faa } /* Name.Property */ +html[data-theme="light"] .highlight .nt { color: #007faa } /* Name.Tag */ +html[data-theme="light"] .highlight .nv { color: #d91e18 } /* Name.Variable */ +html[data-theme="light"] .highlight .ow { color: #7928a1 } /* Operator.Word */ +html[data-theme="light"] .highlight .pm { color: #545454 } /* Punctuation.Marker */ +html[data-theme="light"] .highlight .w { color: #545454 } /* Text.Whitespace */ +html[data-theme="light"] .highlight .mb { color: #797129 } /* Literal.Number.Bin */ +html[data-theme="light"] .highlight .mf { color: #797129 } /* Literal.Number.Float */ +html[data-theme="light"] .highlight .mh { color: #797129 } /* Literal.Number.Hex */ +html[data-theme="light"] .highlight .mi { color: #797129 } /* Literal.Number.Integer */ +html[data-theme="light"] .highlight .mo { color: #797129 } /* Literal.Number.Oct */ +html[data-theme="light"] .highlight .sa { color: #008000 } /* Literal.String.Affix */ +html[data-theme="light"] .highlight .sb { color: #008000 } /* Literal.String.Backtick */ +html[data-theme="light"] .highlight .sc { color: #008000 } /* Literal.String.Char */ +html[data-theme="light"] .highlight .dl { color: #008000 } /* Literal.String.Delimiter */ +html[data-theme="light"] .highlight .sd { color: #008000 } /* Literal.String.Doc */ +html[data-theme="light"] .highlight .s2 { color: #008000 } /* Literal.String.Double */ +html[data-theme="light"] .highlight .se { color: #008000 } /* Literal.String.Escape */ +html[data-theme="light"] .highlight .sh { color: #008000 } /* Literal.String.Heredoc */ +html[data-theme="light"] .highlight .si { color: #008000 } /* Literal.String.Interpol */ +html[data-theme="light"] .highlight .sx { color: #008000 } /* Literal.String.Other */ +html[data-theme="light"] .highlight .sr { color: #d91e18 } /* Literal.String.Regex */ +html[data-theme="light"] .highlight .s1 { color: #008000 } /* Literal.String.Single */ +html[data-theme="light"] .highlight .ss { color: #007faa } /* Literal.String.Symbol */ +html[data-theme="light"] .highlight .bp { color: #797129 } /* Name.Builtin.Pseudo */ +html[data-theme="light"] .highlight .fm { color: #007faa } /* Name.Function.Magic */ +html[data-theme="light"] .highlight .vc { color: #d91e18 } /* Name.Variable.Class */ +html[data-theme="light"] .highlight .vg { color: #d91e18 } /* Name.Variable.Global */ +html[data-theme="light"] .highlight .vi { color: #d91e18 } /* Name.Variable.Instance */ +html[data-theme="light"] .highlight .vm { color: #797129 } /* Name.Variable.Magic */ +html[data-theme="light"] .highlight .il { color: #797129 } /* Literal.Number.Integer.Long */ +html[data-theme="dark"] .highlight pre { line-height: 125%; } +html[data-theme="dark"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight .hll { background-color: #ffd9002e } +html[data-theme="dark"] .highlight { background: #2b2b2b; color: #f8f8f2 } +html[data-theme="dark"] .highlight .c { color: #ffd900 } /* Comment */ +html[data-theme="dark"] .highlight .err { color: #ffa07a } /* Error */ +html[data-theme="dark"] .highlight .k { color: #dcc6e0 } /* Keyword */ +html[data-theme="dark"] .highlight .l { color: #ffd900 } /* Literal */ +html[data-theme="dark"] .highlight .n { color: #f8f8f2 } /* Name */ +html[data-theme="dark"] .highlight .o { color: #abe338 } /* Operator */ +html[data-theme="dark"] .highlight .p { color: #f8f8f2 } /* Punctuation */ +html[data-theme="dark"] .highlight .ch { color: #ffd900 } /* Comment.Hashbang */ +html[data-theme="dark"] .highlight .cm { color: #ffd900 } /* Comment.Multiline */ +html[data-theme="dark"] .highlight .cp { color: #ffd900 } /* Comment.Preproc */ +html[data-theme="dark"] .highlight .cpf { color: #ffd900 } /* Comment.PreprocFile */ +html[data-theme="dark"] .highlight .c1 { color: #ffd900 } /* Comment.Single */ +html[data-theme="dark"] .highlight .cs { color: #ffd900 } /* Comment.Special */ +html[data-theme="dark"] .highlight .gd { color: #00e0e0 } /* Generic.Deleted */ +html[data-theme="dark"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="dark"] .highlight .gh { color: #00e0e0 } /* Generic.Heading */ +html[data-theme="dark"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="dark"] .highlight .gu { color: #00e0e0 } /* Generic.Subheading */ +html[data-theme="dark"] .highlight .kc { color: #dcc6e0 } /* Keyword.Constant */ +html[data-theme="dark"] .highlight .kd { color: #dcc6e0 } /* Keyword.Declaration */ +html[data-theme="dark"] .highlight .kn { color: #dcc6e0 } /* Keyword.Namespace */ +html[data-theme="dark"] .highlight .kp { color: #dcc6e0 } /* Keyword.Pseudo */ +html[data-theme="dark"] .highlight .kr { color: #dcc6e0 } /* Keyword.Reserved */ +html[data-theme="dark"] .highlight .kt { color: #ffd900 } /* Keyword.Type */ +html[data-theme="dark"] .highlight .ld { color: #ffd900 } /* Literal.Date */ +html[data-theme="dark"] .highlight .m { color: #ffd900 } /* Literal.Number */ +html[data-theme="dark"] .highlight .s { color: #abe338 } /* Literal.String */ +html[data-theme="dark"] .highlight .na { color: #ffd900 } /* Name.Attribute */ +html[data-theme="dark"] .highlight .nb { color: #ffd900 } /* Name.Builtin */ +html[data-theme="dark"] .highlight .nc { color: #00e0e0 } /* Name.Class */ +html[data-theme="dark"] .highlight .no { color: #00e0e0 } /* Name.Constant */ +html[data-theme="dark"] .highlight .nd { color: #ffd900 } /* Name.Decorator */ +html[data-theme="dark"] .highlight .ni { color: #abe338 } /* Name.Entity */ +html[data-theme="dark"] .highlight .ne { color: #dcc6e0 } /* Name.Exception */ +html[data-theme="dark"] .highlight .nf { color: #00e0e0 } /* Name.Function */ +html[data-theme="dark"] .highlight .nl { color: #ffd900 } /* Name.Label */ +html[data-theme="dark"] .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ +html[data-theme="dark"] .highlight .nx { color: #f8f8f2 } /* Name.Other */ +html[data-theme="dark"] .highlight .py { color: #00e0e0 } /* Name.Property */ +html[data-theme="dark"] .highlight .nt { color: #00e0e0 } /* Name.Tag */ +html[data-theme="dark"] .highlight .nv { color: #ffa07a } /* Name.Variable */ +html[data-theme="dark"] .highlight .ow { color: #dcc6e0 } /* Operator.Word */ +html[data-theme="dark"] .highlight .pm { color: #f8f8f2 } /* Punctuation.Marker */ +html[data-theme="dark"] .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ +html[data-theme="dark"] .highlight .mb { color: #ffd900 } /* Literal.Number.Bin */ +html[data-theme="dark"] .highlight .mf { color: #ffd900 } /* Literal.Number.Float */ +html[data-theme="dark"] .highlight .mh { color: #ffd900 } /* Literal.Number.Hex */ +html[data-theme="dark"] .highlight .mi { color: #ffd900 } /* Literal.Number.Integer */ +html[data-theme="dark"] .highlight .mo { color: #ffd900 } /* Literal.Number.Oct */ +html[data-theme="dark"] .highlight .sa { color: #abe338 } /* Literal.String.Affix */ +html[data-theme="dark"] .highlight .sb { color: #abe338 } /* Literal.String.Backtick */ +html[data-theme="dark"] .highlight .sc { color: #abe338 } /* Literal.String.Char */ +html[data-theme="dark"] .highlight .dl { color: #abe338 } /* Literal.String.Delimiter */ +html[data-theme="dark"] .highlight .sd { color: #abe338 } /* Literal.String.Doc */ +html[data-theme="dark"] .highlight .s2 { color: #abe338 } /* Literal.String.Double */ +html[data-theme="dark"] .highlight .se { color: #abe338 } /* Literal.String.Escape */ +html[data-theme="dark"] .highlight .sh { color: #abe338 } /* Literal.String.Heredoc */ +html[data-theme="dark"] .highlight .si { color: #abe338 } /* Literal.String.Interpol */ +html[data-theme="dark"] .highlight .sx { color: #abe338 } /* Literal.String.Other */ +html[data-theme="dark"] .highlight .sr { color: #ffa07a } /* Literal.String.Regex */ +html[data-theme="dark"] .highlight .s1 { color: #abe338 } /* Literal.String.Single */ +html[data-theme="dark"] .highlight .ss { color: #00e0e0 } /* Literal.String.Symbol */ +html[data-theme="dark"] .highlight .bp { color: #ffd900 } /* Name.Builtin.Pseudo */ +html[data-theme="dark"] .highlight .fm { color: #00e0e0 } /* Name.Function.Magic */ +html[data-theme="dark"] .highlight .vc { color: #ffa07a } /* Name.Variable.Class */ +html[data-theme="dark"] .highlight .vg { color: #ffa07a } /* Name.Variable.Global */ +html[data-theme="dark"] .highlight .vi { color: #ffa07a } /* Name.Variable.Instance */ +html[data-theme="dark"] .highlight .vm { color: #ffd900 } /* Name.Variable.Magic */ +html[data-theme="dark"] .highlight .il { color: #ffd900 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/sbt-webpack-macros.html b/_static/sbt-webpack-macros.html new file mode 100644 index 0000000..6cbf559 --- /dev/null +++ b/_static/sbt-webpack-macros.html @@ -0,0 +1,11 @@ + +{% macro head_pre_bootstrap() %} + +{% endmacro %} + +{% macro body_post() %} + +{% endmacro %} diff --git a/_static/scripts/bootstrap.js b/_static/scripts/bootstrap.js new file mode 100644 index 0000000..4e209b0 --- /dev/null +++ b/_static/scripts/bootstrap.js @@ -0,0 +1,3 @@ +/*! For license information please see bootstrap.js.LICENSE.txt */ +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>E,afterRead:()=>v,afterWrite:()=>C,applyStyles:()=>$,arrow:()=>J,auto:()=>a,basePlacements:()=>l,beforeMain:()=>y,beforeRead:()=>_,beforeWrite:()=>A,bottom:()=>s,clippingParents:()=>d,computeStyles:()=>it,createPopper:()=>Dt,createPopperBase:()=>St,createPopperLite:()=>$t,detectOverflow:()=>_t,end:()=>h,eventListeners:()=>st,flip:()=>bt,hide:()=>wt,left:()=>r,main:()=>w,modifierPhases:()=>O,offset:()=>Et,placements:()=>g,popper:()=>f,popperGenerator:()=>Lt,popperOffsets:()=>At,preventOverflow:()=>Tt,read:()=>b,reference:()=>p,right:()=>o,start:()=>c,top:()=>n,variationPlacements:()=>m,viewport:()=>u,write:()=>T});var i={};t.r(i),t.d(i,{Alert:()=>Oe,Button:()=>ke,Carousel:()=>ri,Collapse:()=>yi,Dropdown:()=>Vi,Modal:()=>xn,Offcanvas:()=>Vn,Popover:()=>fs,ScrollSpy:()=>Ts,Tab:()=>Ks,Toast:()=>lo,Tooltip:()=>hs});var n="top",s="bottom",o="right",r="left",a="auto",l=[n,s,o,r],c="start",h="end",d="clippingParents",u="viewport",f="popper",p="reference",m=l.reduce((function(t,e){return t.concat([e+"-"+c,e+"-"+h])}),[]),g=[].concat(l,[a]).reduce((function(t,e){return t.concat([e,e+"-"+c,e+"-"+h])}),[]),_="beforeRead",b="read",v="afterRead",y="beforeMain",w="main",E="afterMain",A="beforeWrite",T="write",C="afterWrite",O=[_,b,v,y,w,E,A,T,C];function x(t){return t?(t.nodeName||"").toLowerCase():null}function k(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function L(t){return t instanceof k(t).Element||t instanceof Element}function S(t){return t instanceof k(t).HTMLElement||t instanceof HTMLElement}function D(t){return"undefined"!=typeof ShadowRoot&&(t instanceof k(t).ShadowRoot||t instanceof ShadowRoot)}const $={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];S(s)&&x(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});S(n)&&x(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function I(t){return t.split("-")[0]}var N=Math.max,P=Math.min,M=Math.round;function j(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function F(){return!/^((?!chrome|android).)*safari/i.test(j())}function H(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&S(t)&&(s=t.offsetWidth>0&&M(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&M(n.height)/t.offsetHeight||1);var r=(L(t)?k(t):window).visualViewport,a=!F()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function B(t){var e=H(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function W(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&D(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function z(t){return k(t).getComputedStyle(t)}function R(t){return["table","td","th"].indexOf(x(t))>=0}function q(t){return((L(t)?t.ownerDocument:t.document)||window.document).documentElement}function V(t){return"html"===x(t)?t:t.assignedSlot||t.parentNode||(D(t)?t.host:null)||q(t)}function Y(t){return S(t)&&"fixed"!==z(t).position?t.offsetParent:null}function K(t){for(var e=k(t),i=Y(t);i&&R(i)&&"static"===z(i).position;)i=Y(i);return i&&("html"===x(i)||"body"===x(i)&&"static"===z(i).position)?e:i||function(t){var e=/firefox/i.test(j());if(/Trident/i.test(j())&&S(t)&&"fixed"===z(t).position)return null;var i=V(t);for(D(i)&&(i=i.host);S(i)&&["html","body"].indexOf(x(i))<0;){var n=z(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Q(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function X(t,e,i){return N(t,P(e,i))}function U(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function G(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const J={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,a=t.name,c=t.options,h=i.elements.arrow,d=i.modifiersData.popperOffsets,u=I(i.placement),f=Q(u),p=[r,o].indexOf(u)>=0?"height":"width";if(h&&d){var m=function(t,e){return U("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:G(t,l))}(c.padding,i),g=B(h),_="y"===f?n:r,b="y"===f?s:o,v=i.rects.reference[p]+i.rects.reference[f]-d[f]-i.rects.popper[p],y=d[f]-i.rects.reference[f],w=K(h),E=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,A=v/2-y/2,T=m[_],C=E-g[p]-m[b],O=E/2-g[p]/2+A,x=X(T,O,C),k=f;i.modifiersData[a]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&W(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Z(t){return t.split("-")[1]}var tt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function et(t){var e,i=t.popper,a=t.popperRect,l=t.placement,c=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,m=t.roundOffsets,g=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof m?m({x:b,y}):{x:b,y};b=w.x,y=w.y;var E=d.hasOwnProperty("x"),A=d.hasOwnProperty("y"),T=r,C=n,O=window;if(p){var x=K(i),L="clientHeight",S="clientWidth";x===k(i)&&"static"!==z(x=q(i)).position&&"absolute"===u&&(L="scrollHeight",S="scrollWidth"),(l===n||(l===r||l===o)&&c===h)&&(C=s,y-=(g&&x===O&&O.visualViewport?O.visualViewport.height:x[L])-a.height,y*=f?1:-1),l!==r&&(l!==n&&l!==s||c!==h)||(T=o,b-=(g&&x===O&&O.visualViewport?O.visualViewport.width:x[S])-a.width,b*=f?1:-1)}var D,$=Object.assign({position:u},p&&tt),I=!0===m?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:M(i*s)/s||0,y:M(n*s)/s||0}}({x:b,y},k(i)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},$,((D={})[C]=A?"0":"",D[T]=E?"0":"",D.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",D)):Object.assign({},$,((e={})[C]=A?y+"px":"",e[T]=E?b+"px":"",e.transform="",e))}const it={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:I(e.placement),variation:Z(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,et(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,et(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var nt={passive:!0};const st={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=k(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,nt)})),a&&l.addEventListener("resize",i.update,nt),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,nt)})),a&&l.removeEventListener("resize",i.update,nt)}},data:{}};var ot={left:"right",right:"left",bottom:"top",top:"bottom"};function rt(t){return t.replace(/left|right|bottom|top/g,(function(t){return ot[t]}))}var at={start:"end",end:"start"};function lt(t){return t.replace(/start|end/g,(function(t){return at[t]}))}function ct(t){var e=k(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ht(t){return H(q(t)).left+ct(t).scrollLeft}function dt(t){var e=z(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function ut(t){return["html","body","#document"].indexOf(x(t))>=0?t.ownerDocument.body:S(t)&&dt(t)?t:ut(V(t))}function ft(t,e){var i;void 0===e&&(e=[]);var n=ut(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=k(n),r=s?[o].concat(o.visualViewport||[],dt(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ft(V(r)))}function pt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function mt(t,e,i){return e===u?pt(function(t,e){var i=k(t),n=q(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=F();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ht(t),y:l}}(t,i)):L(e)?function(t,e){var i=H(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):pt(function(t){var e,i=q(t),n=ct(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=N(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=N(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ht(t),l=-n.scrollTop;return"rtl"===z(s||i).direction&&(a+=N(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(q(t)))}function gt(t){var e,i=t.reference,a=t.element,l=t.placement,d=l?I(l):null,u=l?Z(l):null,f=i.x+i.width/2-a.width/2,p=i.y+i.height/2-a.height/2;switch(d){case n:e={x:f,y:i.y-a.height};break;case s:e={x:f,y:i.y+i.height};break;case o:e={x:i.x+i.width,y:p};break;case r:e={x:i.x-a.width,y:p};break;default:e={x:i.x,y:i.y}}var m=d?Q(d):null;if(null!=m){var g="y"===m?"height":"width";switch(u){case c:e[m]=e[m]-(i[g]/2-a[g]/2);break;case h:e[m]=e[m]+(i[g]/2-a[g]/2)}}return e}function _t(t,e){void 0===e&&(e={});var i=e,r=i.placement,a=void 0===r?t.placement:r,c=i.strategy,h=void 0===c?t.strategy:c,m=i.boundary,g=void 0===m?d:m,_=i.rootBoundary,b=void 0===_?u:_,v=i.elementContext,y=void 0===v?f:v,w=i.altBoundary,E=void 0!==w&&w,A=i.padding,T=void 0===A?0:A,C=U("number"!=typeof T?T:G(T,l)),O=y===f?p:f,k=t.rects.popper,D=t.elements[E?O:y],$=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ft(V(t)),i=["absolute","fixed"].indexOf(z(t).position)>=0&&S(t)?K(t):t;return L(i)?e.filter((function(t){return L(t)&&W(t,i)&&"body"!==x(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=mt(t,i,n);return e.top=N(s.top,e.top),e.right=P(s.right,e.right),e.bottom=P(s.bottom,e.bottom),e.left=N(s.left,e.left),e}),mt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(L(D)?D:D.contextElement||q(t.elements.popper),g,b,h),I=H(t.elements.reference),M=gt({reference:I,element:k,strategy:"absolute",placement:a}),j=pt(Object.assign({},k,M)),F=y===f?j:I,B={top:$.top-F.top+C.top,bottom:F.bottom-$.bottom+C.bottom,left:$.left-F.left+C.left,right:F.right-$.right+C.right},R=t.modifiersData.offset;if(y===f&&R){var Y=R[a];Object.keys(B).forEach((function(t){var e=[o,s].indexOf(t)>=0?1:-1,i=[n,s].indexOf(t)>=0?"y":"x";B[t]+=Y[i]*e}))}return B}const bt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=i.mainAxis,u=void 0===d||d,f=i.altAxis,p=void 0===f||f,_=i.fallbackPlacements,b=i.padding,v=i.boundary,y=i.rootBoundary,w=i.altBoundary,E=i.flipVariations,A=void 0===E||E,T=i.allowedAutoPlacements,C=e.options.placement,O=I(C),x=_||(O!==C&&A?function(t){if(I(t)===a)return[];var e=rt(t);return[lt(t),e,lt(e)]}(C):[rt(C)]),k=[C].concat(x).reduce((function(t,i){return t.concat(I(i)===a?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?g:c,d=Z(n),u=d?a?m:m.filter((function(t){return Z(t)===d})):l,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var p=f.reduce((function(e,i){return e[i]=_t(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[I(i)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:A,allowedAutoPlacements:T}):i)}),[]),L=e.rects.reference,S=e.rects.popper,D=new Map,$=!0,N=k[0],P=0;P=0,B=H?"width":"height",W=_t(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?o:r:F?s:n;L[B]>S[B]&&(z=rt(z));var R=rt(z),q=[];if(u&&q.push(W[j]<=0),p&&q.push(W[z]<=0,W[R]<=0),q.every((function(t){return t}))){N=M,$=!1;break}D.set(M,q)}if($)for(var V=function(t){var e=k.find((function(e){var i=D.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=A?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function yt(t){return[n,o,s,r].some((function(e){return t[e]>=0}))}const wt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=_t(e,{elementContext:"reference"}),a=_t(e,{altBoundary:!0}),l=vt(r,n),c=vt(a,s,o),h=yt(l),d=yt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Et={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,s=t.name,a=i.offset,l=void 0===a?[0,0]:a,c=g.reduce((function(t,i){return t[i]=function(t,e,i){var s=I(t),a=[r,n].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},e,{placement:t})):i,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[r,o].indexOf(s)>=0?{x:h,y:c}:{x:c,y:h}}(i,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[s]=c}},At={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=gt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},Tt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,a=t.name,l=i.mainAxis,h=void 0===l||l,d=i.altAxis,u=void 0!==d&&d,f=i.boundary,p=i.rootBoundary,m=i.altBoundary,g=i.padding,_=i.tether,b=void 0===_||_,v=i.tetherOffset,y=void 0===v?0:v,w=_t(e,{boundary:f,rootBoundary:p,padding:g,altBoundary:m}),E=I(e.placement),A=Z(e.placement),T=!A,C=Q(E),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,S="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,D="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),$=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?n:r,H="y"===C?s:o,W="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[H],V=b?-L[W]/2:0,Y=A===c?k[W]:L[W],U=A===c?-L[W]:-k[W],G=e.elements.arrow,J=b&&G?B(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[F],it=tt[H],nt=X(0,k[W],J[W]),st=T?k[W]/2-V-nt-et-D.mainAxis:Y-nt-et-D.mainAxis,ot=T?-k[W]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&K(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==$?void 0:$[C])?j:0,ct=z+ot-lt,ht=X(b?P(R,z+st-lt-at):R,z,b?N(q,ct):q);x[C]=ht,M[C]=ht-z}if(u){var dt,ut="x"===C?n:r,ft="x"===C?s:o,pt=x[O],mt="y"===O?"height":"width",gt=pt+w[ut],bt=pt-w[ft],vt=-1!==[n,r].indexOf(E),yt=null!=(dt=null==$?void 0:$[O])?dt:0,wt=vt?gt:pt-k[mt]-L[mt]-yt+D.altAxis,Et=vt?pt+k[mt]+L[mt]-yt-D.altAxis:bt,At=b&&vt?function(t,e,i){var n=X(t,e,i);return n>i?i:n}(wt,pt,Et):X(b?wt:gt,pt,b?Et:bt);x[O]=At,M[O]=At-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Ct(t,e,i){void 0===i&&(i=!1);var n,s,o=S(e),r=S(e)&&function(t){var e=t.getBoundingClientRect(),i=M(e.width)/t.offsetWidth||1,n=M(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=q(e),l=H(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==x(e)||dt(a))&&(c=(n=e)!==k(n)&&S(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:ct(n)),S(e)?((h=H(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ht(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ot(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function kt(){for(var t=arguments.length,e=new Array(t),i=0;iIt.has(t)&&It.get(t).get(e)||null,remove(t,e){if(!It.has(t))return;const i=It.get(t);i.delete(e),0===i.size&&It.delete(t)}},Pt="transitionend",Mt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),jt=t=>{t.dispatchEvent(new Event(Pt))},Ft=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ht=t=>Ft(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Mt(t)):null,Bt=t=>{if(!Ft(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Wt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),zt=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?zt(t.parentNode):null},Rt=()=>{},qt=t=>{t.offsetHeight},Vt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Yt=[],Kt=()=>"rtl"===document.documentElement.dir,Qt=t=>{var e;e=()=>{const e=Vt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Yt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Yt)t()})),Yt.push(e)):e()},Xt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Ut=(t,e,i=!0)=>{if(!i)return void Xt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(Pt,o),Xt(t))};e.addEventListener(Pt,o),setTimeout((()=>{s||jt(e)}),n)},Gt=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Jt=/[^.]*(?=\..*)\.|.*/,Zt=/\..*/,te=/::\d+$/,ee={};let ie=1;const ne={mouseenter:"mouseover",mouseleave:"mouseout"},se=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function oe(t,e){return e&&`${e}::${ie++}`||t.uidEvent||ie++}function re(t){const e=oe(t);return t.uidEvent=e,ee[e]=ee[e]||{},ee[e]}function ae(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function le(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=ue(t);return se.has(o)||(o=t),[n,s,o]}function ce(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=le(e,i,n);if(e in ne){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=re(t),c=l[a]||(l[a]={}),h=ae(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=oe(r,e.replace(Jt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return pe(s,{delegateTarget:r}),n.oneOff&&fe.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return pe(n,{delegateTarget:t}),i.oneOff&&fe.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function he(t,e,i,n,s){const o=ae(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function de(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&he(t,e,i,r.callable,r.delegationSelector)}function ue(t){return t=t.replace(Zt,""),ne[t]||t}const fe={on(t,e,i,n){ce(t,e,i,n,!1)},one(t,e,i,n){ce(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=le(e,i,n),a=r!==e,l=re(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))de(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(te,"");a&&!e.includes(s)||he(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;he(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=Vt();let s=null,o=!0,r=!0,a=!1;e!==ue(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=pe(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function pe(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function me(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function ge(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const _e={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${ge(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${ge(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=me(t.dataset[n])}return e},getDataAttribute:(t,e)=>me(t.getAttribute(`data-bs-${ge(e)}`))};class be{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=Ft(e)?_e.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...Ft(e)?_e.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=Ft(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}class ve extends be{constructor(t,e){super(),(t=Ht(t))&&(this._element=t,this._config=this._getConfig(e),Nt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Nt.remove(this._element,this.constructor.DATA_KEY),fe.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Ut(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Nt.get(Ht(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const ye=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?Mt(i.trim()):null}return e},we={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Wt(t)&&Bt(t)))},getSelectorFromElement(t){const e=ye(t);return e&&we.findOne(e)?e:null},getElementFromSelector(t){const e=ye(t);return e?we.findOne(e):null},getMultipleElementsFromSelector(t){const e=ye(t);return e?we.find(e):[]}},Ee=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;fe.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Wt(this))return;const s=we.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ae=".bs.alert",Te=`close${Ae}`,Ce=`closed${Ae}`;class Oe extends ve{static get NAME(){return"alert"}close(){if(fe.trigger(this._element,Te).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),fe.trigger(this._element,Ce),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Oe.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}Ee(Oe,"close"),Qt(Oe);const xe='[data-bs-toggle="button"]';class ke extends ve{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=ke.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}fe.on(document,"click.bs.button.data-api",xe,(t=>{t.preventDefault();const e=t.target.closest(xe);ke.getOrCreateInstance(e).toggle()})),Qt(ke);const Le=".bs.swipe",Se=`touchstart${Le}`,De=`touchmove${Le}`,$e=`touchend${Le}`,Ie=`pointerdown${Le}`,Ne=`pointerup${Le}`,Pe={endCallback:null,leftCallback:null,rightCallback:null},Me={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class je extends be{constructor(t,e){super(),this._element=t,t&&je.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Pe}static get DefaultType(){return Me}static get NAME(){return"swipe"}dispose(){fe.off(this._element,Le)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Xt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Xt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(fe.on(this._element,Ie,(t=>this._start(t))),fe.on(this._element,Ne,(t=>this._end(t))),this._element.classList.add("pointer-event")):(fe.on(this._element,Se,(t=>this._start(t))),fe.on(this._element,De,(t=>this._move(t))),fe.on(this._element,$e,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Fe=".bs.carousel",He=".data-api",Be="next",We="prev",ze="left",Re="right",qe=`slide${Fe}`,Ve=`slid${Fe}`,Ye=`keydown${Fe}`,Ke=`mouseenter${Fe}`,Qe=`mouseleave${Fe}`,Xe=`dragstart${Fe}`,Ue=`load${Fe}${He}`,Ge=`click${Fe}${He}`,Je="carousel",Ze="active",ti=".active",ei=".carousel-item",ii=ti+ei,ni={ArrowLeft:Re,ArrowRight:ze},si={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},oi={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class ri extends ve{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=we.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Je&&this.cycle()}static get Default(){return si}static get DefaultType(){return oi}static get NAME(){return"carousel"}next(){this._slide(Be)}nextWhenVisible(){!document.hidden&&Bt(this._element)&&this.next()}prev(){this._slide(We)}pause(){this._isSliding&&jt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?fe.one(this._element,Ve,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void fe.one(this._element,Ve,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?Be:We;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&fe.on(this._element,Ye,(t=>this._keydown(t))),"hover"===this._config.pause&&(fe.on(this._element,Ke,(()=>this.pause())),fe.on(this._element,Qe,(()=>this._maybeEnableCycle()))),this._config.touch&&je.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of we.find(".carousel-item img",this._element))fe.on(t,Xe,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ze)),rightCallback:()=>this._slide(this._directionToOrder(Re)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new je(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=ni[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=we.findOne(ti,this._indicatorsElement);e.classList.remove(Ze),e.removeAttribute("aria-current");const i=we.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Ze),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===Be,s=e||Gt(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>fe.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(qe).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),qt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(Ze),i.classList.remove(Ze,c,l),this._isSliding=!1,r(Ve)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return we.findOne(ii,this._element)}_getItems(){return we.find(ei,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Kt()?t===ze?We:Be:t===ze?Be:We}_orderToDirection(t){return Kt()?t===We?ze:Re:t===We?Re:ze}static jQueryInterface(t){return this.each((function(){const e=ri.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}fe.on(document,Ge,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=we.getElementFromSelector(this);if(!e||!e.classList.contains(Je))return;t.preventDefault();const i=ri.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===_e.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),fe.on(window,Ue,(()=>{const t=we.find('[data-bs-ride="carousel"]');for(const e of t)ri.getOrCreateInstance(e)})),Qt(ri);const ai=".bs.collapse",li=`show${ai}`,ci=`shown${ai}`,hi=`hide${ai}`,di=`hidden${ai}`,ui=`click${ai}.data-api`,fi="show",pi="collapse",mi="collapsing",gi=`:scope .${pi} .${pi}`,_i='[data-bs-toggle="collapse"]',bi={parent:null,toggle:!0},vi={parent:"(null|element)",toggle:"boolean"};class yi extends ve{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=we.find(_i);for(const t of i){const e=we.getSelectorFromElement(t),i=we.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>yi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(fe.trigger(this._element,li).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(pi),this._element.classList.add(mi),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(mi),this._element.classList.add(pi,fi),this._element.style[e]="",fe.trigger(this._element,ci)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(fe.trigger(this._element,hi).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,qt(this._element),this._element.classList.add(mi),this._element.classList.remove(pi,fi);for(const t of this._triggerArray){const e=we.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(mi),this._element.classList.add(pi),fe.trigger(this._element,di)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(fi)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ht(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(_i);for(const e of t){const t=we.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=we.find(gi,this._config.parent);return we.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=yi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}fe.on(document,ui,_i,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of we.getMultipleElementsFromSelector(this))yi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Qt(yi);const wi="dropdown",Ei=".bs.dropdown",Ai=".data-api",Ti="ArrowUp",Ci="ArrowDown",Oi=`hide${Ei}`,xi=`hidden${Ei}`,ki=`show${Ei}`,Li=`shown${Ei}`,Si=`click${Ei}${Ai}`,Di=`keydown${Ei}${Ai}`,$i=`keyup${Ei}${Ai}`,Ii="show",Ni='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Pi=`${Ni}.${Ii}`,Mi=".dropdown-menu",ji=Kt()?"top-end":"top-start",Fi=Kt()?"top-start":"top-end",Hi=Kt()?"bottom-end":"bottom-start",Bi=Kt()?"bottom-start":"bottom-end",Wi=Kt()?"left-start":"right-start",zi=Kt()?"right-start":"left-start",Ri={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},qi={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Vi extends ve{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=we.next(this._element,Mi)[0]||we.prev(this._element,Mi)[0]||we.findOne(Mi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Ri}static get DefaultType(){return qi}static get NAME(){return wi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Wt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!fe.trigger(this._element,ki,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))fe.on(t,"mouseover",Rt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Ii),this._element.classList.add(Ii),fe.trigger(this._element,Li,t)}}hide(){if(Wt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!fe.trigger(this._element,Oi,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.off(t,"mouseover",Rt);this._popper&&this._popper.destroy(),this._menu.classList.remove(Ii),this._element.classList.remove(Ii),this._element.setAttribute("aria-expanded","false"),_e.removeDataAttribute(this._menu,"popper"),fe.trigger(this._element,xi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!Ft(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${wi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:Ft(this._config.reference)?t=Ht(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=Dt(t,this._menu,i)}_isShown(){return this._menu.classList.contains(Ii)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Wi;if(t.classList.contains("dropstart"))return zi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Fi:ji:e?Bi:Hi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(_e.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Xt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=we.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Bt(t)));i.length&&Gt(i,e,t===Ci,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Vi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=we.find(Pi);for(const i of e){const e=Vi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ti,Ci].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ni)?this:we.prev(this,Ni)[0]||we.next(this,Ni)[0]||we.findOne(Ni,t.delegateTarget.parentNode),o=Vi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}fe.on(document,Di,Ni,Vi.dataApiKeydownHandler),fe.on(document,Di,Mi,Vi.dataApiKeydownHandler),fe.on(document,Si,Vi.clearMenus),fe.on(document,$i,Vi.clearMenus),fe.on(document,Si,Ni,(function(t){t.preventDefault(),Vi.getOrCreateInstance(this).toggle()})),Qt(Vi);const Yi="backdrop",Ki="show",Qi=`mousedown.bs.${Yi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Ui={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Gi extends be{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Ui}static get NAME(){return Yi}show(t){if(!this._config.isVisible)return void Xt(t);this._append();const e=this._getElement();this._config.isAnimated&&qt(e),e.classList.add(Ki),this._emulateAnimation((()=>{Xt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),Xt(t)}))):Xt(t)}dispose(){this._isAppended&&(fe.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ht(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),fe.on(t,Qi,(()=>{Xt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Ut(t,this._getElement(),this._config.isAnimated)}}const Ji=".bs.focustrap",Zi=`focusin${Ji}`,tn=`keydown.tab${Ji}`,en="backward",nn={autofocus:!0,trapElement:null},sn={autofocus:"boolean",trapElement:"element"};class on extends be{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return nn}static get DefaultType(){return sn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),fe.off(document,Ji),fe.on(document,Zi,(t=>this._handleFocusin(t))),fe.on(document,tn,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,fe.off(document,Ji))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=we.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===en?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?en:"forward")}}const rn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",an=".sticky-top",ln="padding-right",cn="margin-right";class hn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,ln,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e+t)),this._setElementAttributes(an,cn,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,ln),this._resetElementAttributes(rn,ln),this._resetElementAttributes(an,cn)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&_e.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=_e.getDataAttribute(t,e);null!==i?(_e.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(Ft(t))e(t);else for(const i of we.find(t,this._element))e(i)}}const dn=".bs.modal",un=`hide${dn}`,fn=`hidePrevented${dn}`,pn=`hidden${dn}`,mn=`show${dn}`,gn=`shown${dn}`,_n=`resize${dn}`,bn=`click.dismiss${dn}`,vn=`mousedown.dismiss${dn}`,yn=`keydown.dismiss${dn}`,wn=`click${dn}.data-api`,En="modal-open",An="show",Tn="modal-static",Cn={backdrop:!0,focus:!0,keyboard:!0},On={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class xn extends ve{constructor(t,e){super(t,e),this._dialog=we.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new hn,this._addEventListeners()}static get Default(){return Cn}static get DefaultType(){return On}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||fe.trigger(this._element,mn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(En),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(fe.trigger(this._element,un).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){fe.off(window,dn),fe.off(this._dialog,dn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Gi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new on({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=we.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),qt(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,fe.trigger(this._element,gn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){fe.on(this._element,yn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),fe.on(window,_n,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),fe.on(this._element,vn,(t=>{fe.one(this._element,bn,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(En),this._resetAdjustments(),this._scrollBar.reset(),fe.trigger(this._element,pn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(fe.trigger(this._element,fn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Tn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Tn),this._queueCallback((()=>{this._element.classList.remove(Tn),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Kt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Kt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=xn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}fe.on(document,wn,'[data-bs-toggle="modal"]',(function(t){const e=we.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),fe.one(e,mn,(t=>{t.defaultPrevented||fe.one(e,pn,(()=>{Bt(this)&&this.focus()}))}));const i=we.findOne(".modal.show");i&&xn.getInstance(i).hide(),xn.getOrCreateInstance(e).toggle(this)})),Ee(xn),Qt(xn);const kn=".bs.offcanvas",Ln=".data-api",Sn=`load${kn}${Ln}`,Dn="show",$n="showing",In="hiding",Nn=".offcanvas.show",Pn=`show${kn}`,Mn=`shown${kn}`,jn=`hide${kn}`,Fn=`hidePrevented${kn}`,Hn=`hidden${kn}`,Bn=`resize${kn}`,Wn=`click${kn}${Ln}`,zn=`keydown.dismiss${kn}`,Rn={backdrop:!0,keyboard:!0,scroll:!1},qn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Vn extends ve{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Rn}static get DefaultType(){return qn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||fe.trigger(this._element,Pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new hn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($n),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Dn),this._element.classList.remove($n),fe.trigger(this._element,Mn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(fe.trigger(this._element,jn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(In),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Dn,In),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new hn).reset(),fe.trigger(this._element,Hn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Gi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():fe.trigger(this._element,Fn)}:null})}_initializeFocusTrap(){return new on({trapElement:this._element})}_addEventListeners(){fe.on(this._element,zn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():fe.trigger(this._element,Fn))}))}static jQueryInterface(t){return this.each((function(){const e=Vn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}fe.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=we.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this))return;fe.one(e,Hn,(()=>{Bt(this)&&this.focus()}));const i=we.findOne(Nn);i&&i!==e&&Vn.getInstance(i).hide(),Vn.getOrCreateInstance(e).toggle(this)})),fe.on(window,Sn,(()=>{for(const t of we.find(Nn))Vn.getOrCreateInstance(t).show()})),fe.on(window,Bn,(()=>{for(const t of we.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Vn.getOrCreateInstance(t).hide()})),Ee(Vn),Qt(Vn);const Yn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Un={allowList:Yn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"

"},Gn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Jn={entry:"(string|element|function|null)",selector:"(string|element)"};class Zn extends be{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Un}static get DefaultType(){return Gn}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Jn)}_setContent(t,e,i){const n=we.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?Ft(e)?this._putElementInTemplate(Ht(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Xt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const ts=new Set(["sanitize","allowList","sanitizeFn"]),es="fade",is="show",ns=".modal",ss="hide.bs.modal",os="hover",rs="focus",as={AUTO:"auto",TOP:"top",RIGHT:Kt()?"left":"right",BOTTOM:"bottom",LEFT:Kt()?"right":"left"},ls={allowList:Yn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},cs={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class hs extends ve{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return ls}static get DefaultType(){return cs}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),fe.off(this._element.closest(ns),ss,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=fe.trigger(this._element,this.constructor.eventName("show")),e=(zt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),fe.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(is),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.on(t,"mouseover",Rt);this._queueCallback((()=>{fe.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!fe.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(is),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.off(t,"mouseover",Rt);this._activeTrigger.click=!1,this._activeTrigger[rs]=!1,this._activeTrigger[os]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),fe.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(es,is),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(es),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Zn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(es)}_isShown(){return this.tip&&this.tip.classList.contains(is)}_createPopper(t){const e=Xt(this._config.placement,[this,t,this._element]),i=as[e.toUpperCase()];return Dt(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Xt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Xt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)fe.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===os?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===os?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");fe.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?rs:os]=!0,e._enter()})),fe.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?rs:os]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},fe.on(this._element.closest(ns),ss,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=_e.getDataAttributes(this._element);for(const t of Object.keys(e))ts.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ht(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=hs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Qt(hs);const ds={...hs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},us={...hs.DefaultType,content:"(null|string|element|function)"};class fs extends hs{static get Default(){return ds}static get DefaultType(){return us}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=fs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Qt(fs);const ps=".bs.scrollspy",ms=`activate${ps}`,gs=`click${ps}`,_s=`load${ps}.data-api`,bs="active",vs="[href]",ys=".nav-link",ws=`${ys}, .nav-item > ${ys}, .list-group-item`,Es={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ts extends ve{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Es}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ht(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(fe.off(this._config.target,gs),fe.on(this._config.target,gs,vs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=we.find(vs,this._config.target);for(const e of t){if(!e.hash||Wt(e))continue;const t=we.findOne(decodeURI(e.hash),this._element);Bt(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(bs),this._activateParents(t),fe.trigger(this._element,ms,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))we.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(bs);else for(const e of we.parents(t,".nav, .list-group"))for(const t of we.prev(e,ws))t.classList.add(bs)}_clearActiveClass(t){t.classList.remove(bs);const e=we.find(`${vs}.${bs}`,t);for(const t of e)t.classList.remove(bs)}static jQueryInterface(t){return this.each((function(){const e=Ts.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}fe.on(window,_s,(()=>{for(const t of we.find('[data-bs-spy="scroll"]'))Ts.getOrCreateInstance(t)})),Qt(Ts);const Cs=".bs.tab",Os=`hide${Cs}`,xs=`hidden${Cs}`,ks=`show${Cs}`,Ls=`shown${Cs}`,Ss=`click${Cs}`,Ds=`keydown${Cs}`,$s=`load${Cs}`,Is="ArrowLeft",Ns="ArrowRight",Ps="ArrowUp",Ms="ArrowDown",js="Home",Fs="End",Hs="active",Bs="fade",Ws="show",zs=".dropdown-toggle",Rs=`:not(${zs})`,qs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Vs=`.nav-link${Rs}, .list-group-item${Rs}, [role="tab"]${Rs}, ${qs}`,Ys=`.${Hs}[data-bs-toggle="tab"], .${Hs}[data-bs-toggle="pill"], .${Hs}[data-bs-toggle="list"]`;class Ks extends ve{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),fe.on(this._element,Ds,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?fe.trigger(e,Os,{relatedTarget:t}):null;fe.trigger(t,ks,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Hs),this._activate(we.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),fe.trigger(t,Ls,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Bs)))}_deactivate(t,e){t&&(t.classList.remove(Hs),t.blur(),this._deactivate(we.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),fe.trigger(t,xs,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Bs)))}_keydown(t){if(![Is,Ns,Ps,Ms,js,Fs].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Wt(t)));let i;if([js,Fs].includes(t.key))i=e[t.key===js?0:e.length-1];else{const n=[Ns,Ms].includes(t.key);i=Gt(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return we.find(Vs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=we.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=we.findOne(t,i);s&&s.classList.toggle(n,e)};n(zs,Hs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Hs)}_getInnerElement(t){return t.matches(Vs)?t:we.findOne(Vs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}fe.on(document,Ss,qs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this)||Ks.getOrCreateInstance(this).show()})),fe.on(window,$s,(()=>{for(const t of we.find(Ys))Ks.getOrCreateInstance(t)})),Qt(Ks);const Qs=".bs.toast",Xs=`mouseover${Qs}`,Us=`mouseout${Qs}`,Gs=`focusin${Qs}`,Js=`focusout${Qs}`,Zs=`hide${Qs}`,to=`hidden${Qs}`,eo=`show${Qs}`,io=`shown${Qs}`,no="hide",so="show",oo="showing",ro={animation:"boolean",autohide:"boolean",delay:"number"},ao={animation:!0,autohide:!0,delay:5e3};class lo extends ve{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ao}static get DefaultType(){return ro}static get NAME(){return"toast"}show(){fe.trigger(this._element,eo).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(no),qt(this._element),this._element.classList.add(so,oo),this._queueCallback((()=>{this._element.classList.remove(oo),fe.trigger(this._element,io),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(fe.trigger(this._element,Zs).defaultPrevented||(this._element.classList.add(oo),this._queueCallback((()=>{this._element.classList.add(no),this._element.classList.remove(oo,so),fe.trigger(this._element,to)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(so),super.dispose()}isShown(){return this._element.classList.contains(so)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){fe.on(this._element,Xs,(t=>this._onInteraction(t,!0))),fe.on(this._element,Us,(t=>this._onInteraction(t,!1))),fe.on(this._element,Gs,(t=>this._onInteraction(t,!0))),fe.on(this._element,Js,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=lo.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function co(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}Ee(lo),Qt(lo),co((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new hs(t,{delay:{show:500,hide:100}})}))})),co((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),co((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))})),window.bootstrap=i})(); +//# sourceMappingURL=bootstrap.js.map \ No newline at end of file diff --git a/_static/scripts/bootstrap.js.LICENSE.txt b/_static/scripts/bootstrap.js.LICENSE.txt new file mode 100644 index 0000000..10f979d --- /dev/null +++ b/_static/scripts/bootstrap.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ diff --git a/_static/scripts/bootstrap.js.map b/_static/scripts/bootstrap.js.map new file mode 100644 index 0000000..64e212b --- /dev/null +++ b/_static/scripts/bootstrap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/bootstrap.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/runtime/make namespace object","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/enums.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/math.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/within.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/createPopper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://pydata_sphinx_theme/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/bootstrap.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.2';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null;\n }\n return selector;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\n\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\n\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' + '
' + '
' + '
',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' + '
' + '

' + '
' + '
',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both