From ab32bc5a4aabfc24e00df67a1b1d7139e533759f Mon Sep 17 00:00:00 2001 From: cgadal Date: Wed, 25 Oct 2023 09:43:13 +0000 Subject: [PATCH] deploy: 77a3b22e9ab6dcec4a0086c6d43fd62090e83709 --- .buildinfo | 4 + .nojekyll | 0 _autosummary/pyudv.attenuation.alpha_w.html | 582 +++++ .../pyudv.attenuation.correction_factor.html | 571 +++++ .../pyudv.attenuation.create_MSvoltage.html | 581 +++++ ...yudv.attenuation.cumulative_trapezoid.html | 614 +++++ ...udv.attenuation.direct_models.alpha_w.html | 580 +++++ ...ation.direct_models.correction_factor.html | 576 +++++ ...uation.direct_models.create_MSvoltage.html | 579 +++++ ...on.direct_models.cumulative_trapezoid.html | 619 +++++ .../pyudv.attenuation.direct_models.html | 553 +++++ ....direct_models.near_field_theoretical.html | 581 +++++ ...enuation.direct_models.sound_velocity.html | 576 +++++ .../pyudv.attenuation.explicit_inversion.html | 590 +++++ _autosummary/pyudv.attenuation.html | 568 +++++ ...tenuation.inversion.correction_factor.html | 576 +++++ ...enuation.inversion.explicit_inversion.html | 588 +++++ _autosummary/pyudv.attenuation.inversion.html | 541 ++++ ...dv.attenuation.near_field_theoretical.html | 583 +++++ ...ment_acoustic_models.glass_sphere.Chi.html | 557 +++++ ...nt_acoustic_models.glass_sphere.Chi_i.html | 557 +++++ ...iment_acoustic_models.glass_sphere.Xi.html | 557 +++++ ...sediment_acoustic_models.glass_sphere.html | 551 ++++ ...coustic_models.glass_sphere.trapezoid.html | 657 +++++ ....attenuation.sediment_acoustic_models.html | 540 ++++ ...iment_acoustic_models.quartz_sand.Chi.html | 557 +++++ ...ent_acoustic_models.quartz_sand.Chi_i.html | 557 +++++ ...diment_acoustic_models.quartz_sand.Xi.html | 564 +++++ ....sediment_acoustic_models.quartz_sand.html | 551 ++++ ...acoustic_models.quartz_sand.trapezoid.html | 657 +++++ .../pyudv.attenuation.sound_velocity.html | 578 +++++ _autosummary/pyudv.geometry.Probe.E.html | 535 ++++ _autosummary/pyudv.geometry.Probe.O.html | 535 ++++ _autosummary/pyudv.geometry.Probe.Pref.html | 535 ++++ _autosummary/pyudv.geometry.Probe.X_ref.html | 535 ++++ _autosummary/pyudv.geometry.Probe.alpha.html | 535 ++++ _autosummary/pyudv.geometry.Probe.html | 620 +++++ .../pyudv.geometry.Probe.plot_probe.html | 573 +++++ _autosummary/pyudv.geometry.Probe.r.html | 535 ++++ _autosummary/pyudv.geometry.Probe.r_ref.html | 535 ++++ _autosummary/pyudv.geometry.Probe.r_to_x.html | 572 +++++ _autosummary/pyudv.geometry.Probe.r_to_z.html | 572 +++++ .../pyudv.geometry.Probe.unit_vec.html | 535 ++++ .../pyudv.geometry.Probe.xz_to_r.html | 575 +++++ .../pyudv.geometry.average_amplitude.html | 576 +++++ .../pyudv.geometry.compute_vertical_axis.html | 569 +++++ _autosummary/pyudv.geometry.html | 555 +++++ .../pyudv.geometry.probe_crossing_point.html | 570 +++++ .../pyudv.geometry.reconstruct_velocity.html | 583 +++++ .../pyudv.geometry.sketch_probes.html | 574 +++++ .../pyudv.helpers.compute_common_part.html | 572 +++++ .../pyudv.helpers.create_arboresence.html | 552 +++++ _autosummary/pyudv.helpers.html | 549 ++++ _autosummary/pyudv.helpers.moving_std.html | 568 +++++ _autosummary/pyudv.helpers.moving_std1d.html | 569 +++++ .../pyudv.helpers.uniform_filter.html | 638 +++++ .../pyudv.helpers.uniform_filter1d.html | 610 +++++ _autosummary/pyudv.html | 540 ++++ ...dv.read_mfprof.amplitude_from_UVPdata.html | 573 +++++ ..._mfprof.amplitude_from_mfprof_reading.html | 577 +++++ _autosummary/pyudv.read_mfprof.html | 553 +++++ .../pyudv.read_mfprof.mfprof_to_netcdf.html | 567 +++++ .../pyudv.read_mfprof.read_mfprof.html | 578 +++++ ...udv.read_mfprof.velocity_from_UVPdata.html | 571 +++++ ...d_mfprof.velocity_from_mfprof_reading.html | 576 +++++ .../pyudv.read_mfprof.write_dictionnary.html | 564 +++++ .../plot_reconstruct_velocity.py | 67 + .../plot_direct_inversion.py | 188 ++ .../plot_sketch_multiple_probes.ipynb | 43 + .../_examples_python.zip | Bin 0 -> 11149 bytes .../plot_read_plot_mfprof_data.py | 69 + .../_examples_jupyter.zip | Bin 0 -> 16180 bytes .../plot_sketch_multiple_probes.py | 50 + .../plot_direct_inversion.ipynb | 115 + .../plot_read_plot_mfprof_data.ipynb | 43 + .../plot_reconstruct_velocity.ipynb | 97 + _examples/index.html | 468 ++++ _examples/plot_direct_inversion.html | 669 +++++ _examples/plot_read_plot_mfprof_data.html | 531 ++++ _examples/plot_reconstruct_velocity.html | 544 ++++ _examples/plot_sketch_multiple_probes.html | 508 ++++ _examples/sg_execution_times.html | 449 ++++ .../sphx_glr_plot_direct_inversion_001.png | Bin 0 -> 88584 bytes .../sphx_glr_plot_direct_inversion_002.png | Bin 0 -> 129975 bytes .../sphx_glr_plot_direct_inversion_003.png | Bin 0 -> 185096 bytes .../sphx_glr_plot_direct_inversion_thumb.png | Bin 0 -> 20689 bytes ...phx_glr_plot_read_plot_mfprof_data_001.png | Bin 0 -> 241999 bytes ...phx_glr_plot_read_plot_mfprof_data_002.png | Bin 0 -> 264768 bytes ...x_glr_plot_read_plot_mfprof_data_thumb.png | Bin 0 -> 114544 bytes ...sphx_glr_plot_reconstruct_velocity_001.png | Bin 0 -> 14791 bytes ...sphx_glr_plot_reconstruct_velocity_002.png | Bin 0 -> 18338 bytes ...hx_glr_plot_reconstruct_velocity_thumb.png | Bin 0 -> 8684 bytes ...hx_glr_plot_sketch_multiple_probes_001.png | Bin 0 -> 25833 bytes ..._glr_plot_sketch_multiple_probes_thumb.png | Bin 0 -> 15240 bytes _modules/index.html | 434 ++++ _modules/pyudv/attenuation/direct_models.html | 598 +++++ _modules/pyudv/attenuation/inversion.html | 565 +++++ .../glass_sphere.html | 464 ++++ .../sediment_acoustic_models/quartz_sand.html | 467 ++++ _modules/pyudv/geometry.html | 838 +++++++ _modules/pyudv/helpers.html | 529 ++++ _modules/pyudv/read_mfprof.html | 1007 ++++++++ _modules/scipy/integrate/_quadrature.html | 1942 +++++++++++++++ _modules/scipy/ndimage/_filters.html | 2205 +++++++++++++++++ _static/basic.css | 925 +++++++ _static/binder_badge_logo.svg | 1 + _static/broken_example.png | Bin 0 -> 21404 bytes _static/doctools.js | 156 ++ _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/jupyterlite_badge_logo.svg | 3 + _static/language_data.js | 199 ++ _static/minus.png | Bin 0 -> 90 bytes _static/no_image.png | Bin 0 -> 4315 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pydata-custom.css | 56 + _static/pygments.css | 152 ++ _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/searchtools.js | 574 +++++ _static/sg_gallery-binder.css | 11 + _static/sg_gallery-dataframe.css | 47 + _static/sg_gallery-rendered-html.css | 224 ++ _static/sg_gallery.css | 342 +++ _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/theme.css | 2 + _static/vendor/fontawesome/6.1.2/LICENSE.txt | 165 ++ .../vendor/fontawesome/6.1.2/css/all.min.css | 5 + .../vendor/fontawesome/6.1.2/js/all.min.js | 2 + .../6.1.2/js/all.min.js.LICENSE.txt | 5 + .../6.1.2/webfonts/fa-brands-400.ttf | Bin 0 -> 181264 bytes .../6.1.2/webfonts/fa-brands-400.woff2 | Bin 0 -> 105112 bytes .../6.1.2/webfonts/fa-regular-400.ttf | Bin 0 -> 60236 bytes .../6.1.2/webfonts/fa-regular-400.woff2 | Bin 0 -> 24028 bytes .../6.1.2/webfonts/fa-solid-900.ttf | Bin 0 -> 389948 bytes .../6.1.2/webfonts/fa-solid-900.woff2 | Bin 0 -> 154840 bytes .../6.1.2/webfonts/fa-v4compatibility.ttf | Bin 0 -> 10084 bytes .../6.1.2/webfonts/fa-v4compatibility.woff2 | Bin 0 -> 4776 bytes _static/webpack-macros.html | 31 + api.html | 432 ++++ genindex.html | 722 ++++++ index.html | 411 +++ objects.inv | Bin 0 -> 2927 bytes py-modindex.html | 464 ++++ search.html | 428 ++++ searchindex.js | 1 + 153 files changed, 54958 insertions(+) create mode 100644 .buildinfo create mode 100644 .nojekyll create mode 100644 _autosummary/pyudv.attenuation.alpha_w.html create mode 100644 _autosummary/pyudv.attenuation.correction_factor.html create mode 100644 _autosummary/pyudv.attenuation.create_MSvoltage.html create mode 100644 _autosummary/pyudv.attenuation.cumulative_trapezoid.html create mode 100644 _autosummary/pyudv.attenuation.direct_models.alpha_w.html create mode 100644 _autosummary/pyudv.attenuation.direct_models.correction_factor.html create mode 100644 _autosummary/pyudv.attenuation.direct_models.create_MSvoltage.html create mode 100644 _autosummary/pyudv.attenuation.direct_models.cumulative_trapezoid.html create mode 100644 _autosummary/pyudv.attenuation.direct_models.html create mode 100644 _autosummary/pyudv.attenuation.direct_models.near_field_theoretical.html create mode 100644 _autosummary/pyudv.attenuation.direct_models.sound_velocity.html create mode 100644 _autosummary/pyudv.attenuation.explicit_inversion.html create mode 100644 _autosummary/pyudv.attenuation.html create mode 100644 _autosummary/pyudv.attenuation.inversion.correction_factor.html create mode 100644 _autosummary/pyudv.attenuation.inversion.explicit_inversion.html create mode 100644 _autosummary/pyudv.attenuation.inversion.html create mode 100644 _autosummary/pyudv.attenuation.near_field_theoretical.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi_i.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Xi.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.trapezoid.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi_i.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Xi.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.html create mode 100644 _autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.trapezoid.html create mode 100644 _autosummary/pyudv.attenuation.sound_velocity.html create mode 100644 _autosummary/pyudv.geometry.Probe.E.html create mode 100644 _autosummary/pyudv.geometry.Probe.O.html create mode 100644 _autosummary/pyudv.geometry.Probe.Pref.html create mode 100644 _autosummary/pyudv.geometry.Probe.X_ref.html create mode 100644 _autosummary/pyudv.geometry.Probe.alpha.html create mode 100644 _autosummary/pyudv.geometry.Probe.html create mode 100644 _autosummary/pyudv.geometry.Probe.plot_probe.html create mode 100644 _autosummary/pyudv.geometry.Probe.r.html create mode 100644 _autosummary/pyudv.geometry.Probe.r_ref.html create mode 100644 _autosummary/pyudv.geometry.Probe.r_to_x.html create mode 100644 _autosummary/pyudv.geometry.Probe.r_to_z.html create mode 100644 _autosummary/pyudv.geometry.Probe.unit_vec.html create mode 100644 _autosummary/pyudv.geometry.Probe.xz_to_r.html create mode 100644 _autosummary/pyudv.geometry.average_amplitude.html create mode 100644 _autosummary/pyudv.geometry.compute_vertical_axis.html create mode 100644 _autosummary/pyudv.geometry.html create mode 100644 _autosummary/pyudv.geometry.probe_crossing_point.html create mode 100644 _autosummary/pyudv.geometry.reconstruct_velocity.html create mode 100644 _autosummary/pyudv.geometry.sketch_probes.html create mode 100644 _autosummary/pyudv.helpers.compute_common_part.html create mode 100644 _autosummary/pyudv.helpers.create_arboresence.html create mode 100644 _autosummary/pyudv.helpers.html create mode 100644 _autosummary/pyudv.helpers.moving_std.html create mode 100644 _autosummary/pyudv.helpers.moving_std1d.html create mode 100644 _autosummary/pyudv.helpers.uniform_filter.html create mode 100644 _autosummary/pyudv.helpers.uniform_filter1d.html create mode 100644 _autosummary/pyudv.html create mode 100644 _autosummary/pyudv.read_mfprof.amplitude_from_UVPdata.html create mode 100644 _autosummary/pyudv.read_mfprof.amplitude_from_mfprof_reading.html create mode 100644 _autosummary/pyudv.read_mfprof.html create mode 100644 _autosummary/pyudv.read_mfprof.mfprof_to_netcdf.html create mode 100644 _autosummary/pyudv.read_mfprof.read_mfprof.html create mode 100644 _autosummary/pyudv.read_mfprof.velocity_from_UVPdata.html create mode 100644 _autosummary/pyudv.read_mfprof.velocity_from_mfprof_reading.html create mode 100644 _autosummary/pyudv.read_mfprof.write_dictionnary.html create mode 100644 _downloads/041e21a5dcf4665a558ec24266dc2579/plot_reconstruct_velocity.py create mode 100644 _downloads/072ebe5500351177edd3cc97b2ba54e0/plot_direct_inversion.py create mode 100644 _downloads/25862d8e3051524fbbbd734856835c1b/plot_sketch_multiple_probes.ipynb create mode 100644 _downloads/324c76d72de4ccd8db63a09d4b2f0f27/_examples_python.zip create mode 100644 _downloads/39a7d881e7c4cd005f75283a91b4a81d/plot_read_plot_mfprof_data.py create mode 100644 _downloads/3c0d8a29b2f057cd52c92d618498f1b8/_examples_jupyter.zip create mode 100644 _downloads/61df9645d1ec2c2cc529aac03fc0e3bd/plot_sketch_multiple_probes.py create mode 100644 _downloads/6cec4194ce032359195b02a8876d221c/plot_direct_inversion.ipynb create mode 100644 _downloads/a5c9e21f789d517bf8b16d2d54419403/plot_read_plot_mfprof_data.ipynb create mode 100644 _downloads/cd287cdd444dc329dfbb4e599fcea920/plot_reconstruct_velocity.ipynb create mode 100644 _examples/index.html create mode 100644 _examples/plot_direct_inversion.html create mode 100644 _examples/plot_read_plot_mfprof_data.html create mode 100644 _examples/plot_reconstruct_velocity.html create mode 100644 _examples/plot_sketch_multiple_probes.html create mode 100644 _examples/sg_execution_times.html create mode 100644 _images/sphx_glr_plot_direct_inversion_001.png create mode 100644 _images/sphx_glr_plot_direct_inversion_002.png create mode 100644 _images/sphx_glr_plot_direct_inversion_003.png create mode 100644 _images/sphx_glr_plot_direct_inversion_thumb.png create mode 100644 _images/sphx_glr_plot_read_plot_mfprof_data_001.png create mode 100644 _images/sphx_glr_plot_read_plot_mfprof_data_002.png create mode 100644 _images/sphx_glr_plot_read_plot_mfprof_data_thumb.png create mode 100644 _images/sphx_glr_plot_reconstruct_velocity_001.png create mode 100644 _images/sphx_glr_plot_reconstruct_velocity_002.png create mode 100644 _images/sphx_glr_plot_reconstruct_velocity_thumb.png create mode 100644 _images/sphx_glr_plot_sketch_multiple_probes_001.png create mode 100644 _images/sphx_glr_plot_sketch_multiple_probes_thumb.png create mode 100644 _modules/index.html create mode 100644 _modules/pyudv/attenuation/direct_models.html create mode 100644 _modules/pyudv/attenuation/inversion.html create mode 100644 _modules/pyudv/attenuation/sediment_acoustic_models/glass_sphere.html create mode 100644 _modules/pyudv/attenuation/sediment_acoustic_models/quartz_sand.html create mode 100644 _modules/pyudv/geometry.html create mode 100644 _modules/pyudv/helpers.html create mode 100644 _modules/pyudv/read_mfprof.html create mode 100644 _modules/scipy/integrate/_quadrature.html create mode 100644 _modules/scipy/ndimage/_filters.html create mode 100644 _static/basic.css create mode 100644 _static/binder_badge_logo.svg create mode 100644 _static/broken_example.png create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/jupyterlite_badge_logo.svg create mode 100644 _static/language_data.js create mode 100644 _static/minus.png create mode 100644 _static/no_image.png create mode 100644 _static/plus.png create mode 100644 _static/pydata-custom.css create mode 100644 _static/pygments.css 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/searchtools.js create mode 100644 _static/sg_gallery-binder.css create mode 100644 _static/sg_gallery-dataframe.css create mode 100644 _static/sg_gallery-rendered-html.css create mode 100644 _static/sg_gallery.css 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/theme.css create mode 100644 _static/vendor/fontawesome/6.1.2/LICENSE.txt create mode 100644 _static/vendor/fontawesome/6.1.2/css/all.min.css create mode 100644 _static/vendor/fontawesome/6.1.2/js/all.min.js create mode 100644 _static/vendor/fontawesome/6.1.2/js/all.min.js.LICENSE.txt create mode 100644 _static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf create mode 100644 _static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 create mode 100644 _static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf create mode 100644 _static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 create mode 100644 _static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf create mode 100644 _static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 create mode 100644 _static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf create mode 100644 _static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 create mode 100644 _static/webpack-macros.html create mode 100644 api.html create mode 100644 genindex.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..d66cf43 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 2fb6e146442f9ad8a6880f891dfc83c8 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_autosummary/pyudv.attenuation.alpha_w.html b/_autosummary/pyudv.attenuation.alpha_w.html new file mode 100644 index 0000000..c093d61 --- /dev/null +++ b/_autosummary/pyudv.attenuation.alpha_w.html @@ -0,0 +1,582 @@ + + + + + + + + + + + pyudv.attenuation.alpha_w — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.alpha_w#

+
+
+alpha_w(f, T)[source]#
+

Calculate the fresh water attenuation in m-1.

+
+
Parameters:
+
    +
  • f (scalar, array) – Sound frequency in Hertz.

  • +
  • T (scalar, array) – Temperature in Celsius degrees.

  • +
+
+
Returns:
+

return the fresh water attenuation in m-1.

+
+
Return type:
+

scalar, array

+
+
+

Examples

+
>>> f = 2e6
+>>> T = 25
+>>> print(alpha_w(f, T))
+
+
+

References

+

[1] Fisher, F. H., & Simmons, V. P. (1977). Sound absorption in sea water. The Journal of the Acoustical Society of America, 62(3), 558-564.

+
+ +
+

Examples using pyudv.attenuation.alpha_w#

+
+

Concentration inference from amplitude signals

+
Concentration inference from amplitude signals
+
+
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.correction_factor.html b/_autosummary/pyudv.attenuation.correction_factor.html new file mode 100644 index 0000000..935df28 --- /dev/null +++ b/_autosummary/pyudv.attenuation.correction_factor.html @@ -0,0 +1,571 @@ + + + + + + + + + + + pyudv.attenuation.correction_factor — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.correction_factor#

+
+
+correction_factor(r, alpha_w, Ks, Kt, psi)[source]#
+

Compute the part of the mean squared voltage independet of the sediment concentration: \(\frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}}}\)

+
+
Parameters:
+
    +
  • r (scalar, array) – radial coordinate

  • +
  • alpha_w (scalar, array) – water attenuation coefficient

  • +
  • Ks (scalar, array) – Sediment constant.

  • +
  • Kt (scalar, array) – Transducer constant.

  • +
  • psi (scalar, array) – near field function.

  • +
+
+
Returns:
+

return the part of the mean squared voltage that is independent of the sediment concentration.

+
+
Return type:
+

scalar, array

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.create_MSvoltage.html b/_autosummary/pyudv.attenuation.create_MSvoltage.html new file mode 100644 index 0000000..1193ec4 --- /dev/null +++ b/_autosummary/pyudv.attenuation.create_MSvoltage.html @@ -0,0 +1,581 @@ + + + + + + + + + + + pyudv.attenuation.create_MSvoltage — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.create_MSvoltage#

+
+
+create_MSvoltage(C, r, Xi, alpha_w, Ks, Kt, psi)[source]#
+

Compute the mean squared voltage from a concentration profile, given a set of acoustic coefficients: \(\langle V^{2} \rangle = C \frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}} - \int_{0}^{r}\xi C dr}\)

+
+
Parameters:
+
    +
  • C (scalar, array) – Sediment concentration.

  • +
  • r (scalar, array) – Radial coordinate.

  • +
  • Xi (scalar, array) – sediment attenuation constant

  • +
  • alpha_w (scalar, array) – water attenuation coefficient

  • +
  • Ks (scalar, array) – Sediment constant.

  • +
  • Kt (scalar, array) – Transducer constant.

  • +
  • psi (scalar, array) – near field function.

  • +
+
+
Returns:
+

    +
  • scalar, array – Mean squared voltage.

  • +
  • >>>

  • +
+

+
+
+
+ +
+

Examples using pyudv.attenuation.create_MSvoltage#

+
+

Concentration inference from amplitude signals

+
Concentration inference from amplitude signals
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.cumulative_trapezoid.html b/_autosummary/pyudv.attenuation.cumulative_trapezoid.html new file mode 100644 index 0000000..e83682e --- /dev/null +++ b/_autosummary/pyudv.attenuation.cumulative_trapezoid.html @@ -0,0 +1,614 @@ + + + + + + + + + + + pyudv.attenuation.cumulative_trapezoid — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.cumulative_trapezoid#

+
+
+cumulative_trapezoid(y, x=None, dx=1.0, axis=-1, initial=None)[source]#
+

Cumulatively integrate y(x) using the composite trapezoidal rule.

+
+
Parameters:
+
    +
  • y (array_like) – Values to integrate.

  • +
  • x (array_like, optional) – The coordinate to integrate along. If None (default), use spacing dx +between consecutive elements in y.

  • +
  • dx (float, optional) – Spacing between elements of y. Only used if x is None.

  • +
  • axis (int, optional) – Specifies the axis to cumulate. Default is -1 (last axis).

  • +
  • initial (scalar, optional) – If given, insert this value at the beginning of the returned result. +Typically this value should be 0. Default is None, which means no +value at x[0] is returned and res has one element less than y +along the axis of integration.

  • +
+
+
Returns:
+

res – The result of cumulative integration of y along axis. +If initial is None, the shape is such that the axis of integration +has one less value than y. If initial is given, the shape is equal +to that of y.

+
+
Return type:
+

ndarray

+
+
+
+

See also

+

numpy.cumsum, numpy.cumprod

+
+
quad

adaptive quadrature using QUADPACK

+
+
romberg

adaptive Romberg quadrature

+
+
quadrature

adaptive Gaussian quadrature

+
+
fixed_quad

fixed-order Gaussian quadrature

+
+
dblquad

double integrals

+
+
tplquad

triple integrals

+
+
romb

integrators for sampled data

+
+
ode

ODE integrators

+
+
odeint

ODE integrators

+
+
+
+

Examples

+
>>> from scipy import integrate
+>>> import numpy as np
+>>> import matplotlib.pyplot as plt
+
+
+
>>> x = np.linspace(-2, 2, num=20)
+>>> y = x
+>>> y_int = integrate.cumulative_trapezoid(y, x, initial=0)
+>>> plt.plot(x, y_int, 'ro', x, y[0] + 0.5 * x**2, 'b-')
+>>> plt.show()
+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.direct_models.alpha_w.html b/_autosummary/pyudv.attenuation.direct_models.alpha_w.html new file mode 100644 index 0000000..8b63332 --- /dev/null +++ b/_autosummary/pyudv.attenuation.direct_models.alpha_w.html @@ -0,0 +1,580 @@ + + + + + + + + + + + pyudv.attenuation.direct_models.alpha_w — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.direct_models.alpha_w#

+
+
+alpha_w(f, T)[source]#
+

Calculate the fresh water attenuation in m-1.

+
+
Parameters:
+
    +
  • f (scalar, array) – Sound frequency in Hertz.

  • +
  • T (scalar, array) – Temperature in Celsius degrees.

  • +
+
+
Returns:
+

return the fresh water attenuation in m-1.

+
+
Return type:
+

scalar, array

+
+
+

Examples

+
>>> f = 2e6
+>>> T = 25
+>>> print(alpha_w(f, T))
+
+
+

References

+

[1] Fisher, F. H., & Simmons, V. P. (1977). Sound absorption in sea water. The Journal of the Acoustical Society of America, 62(3), 558-564.

+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.direct_models.correction_factor.html b/_autosummary/pyudv.attenuation.direct_models.correction_factor.html new file mode 100644 index 0000000..1ff43b7 --- /dev/null +++ b/_autosummary/pyudv.attenuation.direct_models.correction_factor.html @@ -0,0 +1,576 @@ + + + + + + + + + + + pyudv.attenuation.direct_models.correction_factor — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.direct_models.correction_factor#

+
+
+correction_factor(r, alpha_w, Ks, Kt, psi)[source]#
+

Compute the part of the mean squared voltage independet of the sediment concentration: \(\frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}}}\)

+
+
Parameters:
+
    +
  • r (scalar, array) – radial coordinate

  • +
  • alpha_w (scalar, array) – water attenuation coefficient

  • +
  • Ks (scalar, array) – Sediment constant.

  • +
  • Kt (scalar, array) – Transducer constant.

  • +
  • psi (scalar, array) – near field function.

  • +
+
+
Returns:
+

return the part of the mean squared voltage that is independent of the sediment concentration.

+
+
Return type:
+

scalar, array

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.direct_models.create_MSvoltage.html b/_autosummary/pyudv.attenuation.direct_models.create_MSvoltage.html new file mode 100644 index 0000000..d9c0407 --- /dev/null +++ b/_autosummary/pyudv.attenuation.direct_models.create_MSvoltage.html @@ -0,0 +1,579 @@ + + + + + + + + + + + pyudv.attenuation.direct_models.create_MSvoltage — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.direct_models.create_MSvoltage#

+
+
+create_MSvoltage(C, r, Xi, alpha_w, Ks, Kt, psi)[source]#
+

Compute the mean squared voltage from a concentration profile, given a set of acoustic coefficients: \(\langle V^{2} \rangle = C \frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}} - \int_{0}^{r}\xi C dr}\)

+
+
Parameters:
+
    +
  • C (scalar, array) – Sediment concentration.

  • +
  • r (scalar, array) – Radial coordinate.

  • +
  • Xi (scalar, array) – sediment attenuation constant

  • +
  • alpha_w (scalar, array) – water attenuation coefficient

  • +
  • Ks (scalar, array) – Sediment constant.

  • +
  • Kt (scalar, array) – Transducer constant.

  • +
  • psi (scalar, array) – near field function.

  • +
+
+
Returns:
+

    +
  • scalar, array – Mean squared voltage.

  • +
  • >>>

  • +
+

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.direct_models.cumulative_trapezoid.html b/_autosummary/pyudv.attenuation.direct_models.cumulative_trapezoid.html new file mode 100644 index 0000000..4512904 --- /dev/null +++ b/_autosummary/pyudv.attenuation.direct_models.cumulative_trapezoid.html @@ -0,0 +1,619 @@ + + + + + + + + + + + pyudv.attenuation.direct_models.cumulative_trapezoid — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.direct_models.cumulative_trapezoid#

+
+
+cumulative_trapezoid(y, x=None, dx=1.0, axis=-1, initial=None)[source]#
+

Cumulatively integrate y(x) using the composite trapezoidal rule.

+
+
Parameters:
+
    +
  • y (array_like) – Values to integrate.

  • +
  • x (array_like, optional) – The coordinate to integrate along. If None (default), use spacing dx +between consecutive elements in y.

  • +
  • dx (float, optional) – Spacing between elements of y. Only used if x is None.

  • +
  • axis (int, optional) – Specifies the axis to cumulate. Default is -1 (last axis).

  • +
  • initial (scalar, optional) – If given, insert this value at the beginning of the returned result. +Typically this value should be 0. Default is None, which means no +value at x[0] is returned and res has one element less than y +along the axis of integration.

  • +
+
+
Returns:
+

res – The result of cumulative integration of y along axis. +If initial is None, the shape is such that the axis of integration +has one less value than y. If initial is given, the shape is equal +to that of y.

+
+
Return type:
+

ndarray

+
+
+
+

See also

+

numpy.cumsum, numpy.cumprod

+
+
quad

adaptive quadrature using QUADPACK

+
+
romberg

adaptive Romberg quadrature

+
+
quadrature

adaptive Gaussian quadrature

+
+
fixed_quad

fixed-order Gaussian quadrature

+
+
dblquad

double integrals

+
+
tplquad

triple integrals

+
+
romb

integrators for sampled data

+
+
ode

ODE integrators

+
+
odeint

ODE integrators

+
+
+
+

Examples

+
>>> from scipy import integrate
+>>> import numpy as np
+>>> import matplotlib.pyplot as plt
+
+
+
>>> x = np.linspace(-2, 2, num=20)
+>>> y = x
+>>> y_int = integrate.cumulative_trapezoid(y, x, initial=0)
+>>> plt.plot(x, y_int, 'ro', x, y[0] + 0.5 * x**2, 'b-')
+>>> plt.show()
+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.direct_models.html b/_autosummary/pyudv.attenuation.direct_models.html new file mode 100644 index 0000000..5a9772d --- /dev/null +++ b/_autosummary/pyudv.attenuation.direct_models.html @@ -0,0 +1,553 @@ + + + + + + + + + + + pyudv.attenuation.direct_models — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.direct_models#

+

Functions

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

alpha_w

Calculate the fresh water attenuation in m-1.

correction_factor

Compute the part of the mean squared voltage independet of the sediment concentration: \(\frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}}}\)

create_MSvoltage

Compute the mean squared voltage from a concentration profile, given a set of acoustic coefficients: \(\langle V^{2} \rangle = C \frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}} - \int_{0}^{r}\xi C dr}\)

cumulative_trapezoid

Cumulatively integrate y(x) using the composite trapezoidal rule.

near_field_theoretical

Return the near field function.

sound_velocity

Compute sound velocity in fresh water in [m/s]

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.direct_models.near_field_theoretical.html b/_autosummary/pyudv.attenuation.direct_models.near_field_theoretical.html new file mode 100644 index 0000000..aa25f53 --- /dev/null +++ b/_autosummary/pyudv.attenuation.direct_models.near_field_theoretical.html @@ -0,0 +1,581 @@ + + + + + + + + + + + pyudv.attenuation.direct_models.near_field_theoretical — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.direct_models.near_field_theoretical#

+
+
+near_field_theoretical(r, rn)[source]#
+

Return the near field function.

+
+
Parameters:
+
    +
  • r (scalar, array) – Radial coordinate.

  • +
  • rn (scalar, array) – Near field distance

  • +
+
+
Returns:
+

return the near field function.

+
+
Return type:
+

scalar, array

+
+
+

Examples

+
>>> r = np.linspace(0.1, 1, 100)
+>>> rn = 0.2
+>>> Psi = near_field_theoretical(r, rn)
+
+
+

References

+

[1] Downing, A., Thorne, P. D., & Vincent, C. E. (1995). Backscattering from a suspension in the near field of a piston transducer. The Journal of the Acoustical Society of America, 97(3), 1614-1620. +[2] Pedocchi, F., & García, M. H. (2012). Acoustic measurement of suspended sediment concentration profiles in an oscillatory boundary layer. Continental Shelf Research, 46, 87-95.

+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.direct_models.sound_velocity.html b/_autosummary/pyudv.attenuation.direct_models.sound_velocity.html new file mode 100644 index 0000000..0916744 --- /dev/null +++ b/_autosummary/pyudv.attenuation.direct_models.sound_velocity.html @@ -0,0 +1,576 @@ + + + + + + + + + + + pyudv.attenuation.direct_models.sound_velocity — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.direct_models.sound_velocity#

+
+
+sound_velocity(T)[source]#
+

Compute sound velocity in fresh water in [m/s]

+
+
Parameters:
+

T (scalar, array) – Temperature in Celsius degrees.

+
+
Returns:
+

sound velocity in fresh water in [m/s]

+
+
Return type:
+

scalar, array

+
+
+

Examples

+
>>> T = 25
+>>> print(sound_velocity(T))
+
+
+

References

+

[1] Lubbers, J., & Graaff, R. (1998). A simple and accurate formula for the sound velocity in water. Ultrasound in medicine & biology, 24(7), 1065-1068.

+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.explicit_inversion.html b/_autosummary/pyudv.attenuation.explicit_inversion.html new file mode 100644 index 0000000..9fcdabf --- /dev/null +++ b/_autosummary/pyudv.attenuation.explicit_inversion.html @@ -0,0 +1,590 @@ + + + + + + + + + + + pyudv.attenuation.explicit_inversion — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.explicit_inversion#

+
+
+explicit_inversion(MSV, r, Xi, alpha_w, psi, C0, r0, delta_r=None, n_interp=1000, kind='cubic')[source]#
+

Use the following explicit solution to infer particle concentration from Mean Square Voltage (MSV, \(\langle V^{2} \rangle\)) data: +:rtype: tuple[ndarray, ndarray]

+
+\[C(r) = \frac{f}{B - 4\xi\displaystyle\int^{r}f},\]
+

where

+
+\[f(r) = \langle V^{2} \rangle \left(\frac{r\psi_{(r)}}{K_{\rm s} K_{\rm t}}\right) e^{4r\alpha_{\rm w}} = Ce^{-4\alpha_{\rm s}}.\]
+
+
Parameters:
+
    +
  • MSV (np.ndarray) – Input array containing \(\langle V^{2} \rangle\) data. If 1D, must be the same size as r. If 2D, its last dimension must match the size of r.

  • +
  • r (np.ndarray) – Radial distance to the probe array. Must be 1D, and match the last dimension of MSV.

  • +
  • Xi (float) – sediment asborption coefficient.

  • +
  • alpha_w (float) – water absorption coefficient.

  • +
  • psi (np.ndarray) – Near-field function. Must be 1D, and match the last dimension of MSV.

  • +
  • C0 (float | np.ndarray) – Reference concentration. Can be a float, or a 1D array matching the first dimension of MSV.

  • +
  • r0 (float) – Reference distance corresponding to C0.

  • +
  • delta_r (float, optional) – If not None, the reference concentration is then interpreted as an average between \(r-\delta r\) and \(r+\delta r\) (by default None).

  • +
  • n_interp (int, optional) – Number of point used in the interpolation of the input signal, by default 1000. It is advise to vary this parameter to find its lowest value above which the result becomes independant of it.

  • +
  • kind (str, optional) – Interpolation method used, by default “cubic”. Refer to the documentation of interp1d.

  • +
+
+
Returns:
+

    +
  • C (np.ndarray) – Inferred concentration.

  • +
  • f (np.ndarray) – Integrated array during the procedure. Returned to check the order of magnitudes over wich the integration is performed, and check possible numerical precision errors.

  • +
+

+
+
+
+ +
+

Examples using pyudv.attenuation.explicit_inversion#

+
+

Concentration inference from amplitude signals

+
Concentration inference from amplitude signals
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.html b/_autosummary/pyudv.attenuation.html new file mode 100644 index 0000000..f8529b6 --- /dev/null +++ b/_autosummary/pyudv.attenuation.html @@ -0,0 +1,568 @@ + + + + + + + + + + + pyudv.attenuation — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation#

+

The amplitude model is currently under development, and yet undocumented.

+

Modules

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

pyudv.attenuation.direct_models

pyudv.attenuation.inversion

pyudv.attenuation.sediment_acoustic_models

+

Functions

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

alpha_w

Calculate the fresh water attenuation in m-1.

correction_factor

Compute the part of the mean squared voltage independet of the sediment concentration: \(\frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}}}\)

create_MSvoltage

Compute the mean squared voltage from a concentration profile, given a set of acoustic coefficients: \(\langle V^{2} \rangle = C \frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}} - \int_{0}^{r}\xi C dr}\)

cumulative_trapezoid

Cumulatively integrate y(x) using the composite trapezoidal rule.

explicit_inversion

Use the following explicit solution to infer particle concentration from Mean Square Voltage (MSV, \(\langle V^{2} \rangle\)) data: :rtype: tuple[ndarray, ndarray]

near_field_theoretical

Return the near field function.

sound_velocity

Compute sound velocity in fresh water in [m/s]

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.inversion.correction_factor.html b/_autosummary/pyudv.attenuation.inversion.correction_factor.html new file mode 100644 index 0000000..e0fa52f --- /dev/null +++ b/_autosummary/pyudv.attenuation.inversion.correction_factor.html @@ -0,0 +1,576 @@ + + + + + + + + + + + pyudv.attenuation.inversion.correction_factor — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.inversion.correction_factor#

+
+
+correction_factor(r, alpha_w, Ks, Kt, psi)[source]#
+

Compute the part of the mean squared voltage independet of the sediment concentration: \(\frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}}}\)

+
+
Parameters:
+
    +
  • r (scalar, array) – radial coordinate

  • +
  • alpha_w (scalar, array) – water attenuation coefficient

  • +
  • Ks (scalar, array) – Sediment constant.

  • +
  • Kt (scalar, array) – Transducer constant.

  • +
  • psi (scalar, array) – near field function.

  • +
+
+
Returns:
+

return the part of the mean squared voltage that is independent of the sediment concentration.

+
+
Return type:
+

scalar, array

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.inversion.explicit_inversion.html b/_autosummary/pyudv.attenuation.inversion.explicit_inversion.html new file mode 100644 index 0000000..2905fce --- /dev/null +++ b/_autosummary/pyudv.attenuation.inversion.explicit_inversion.html @@ -0,0 +1,588 @@ + + + + + + + + + + + pyudv.attenuation.inversion.explicit_inversion — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.inversion.explicit_inversion#

+
+
+explicit_inversion(MSV, r, Xi, alpha_w, psi, C0, r0, delta_r=None, n_interp=1000, kind='cubic')[source]#
+

Use the following explicit solution to infer particle concentration from Mean Square Voltage (MSV, \(\langle V^{2} \rangle\)) data: +:rtype: tuple[ndarray, ndarray]

+
+\[C(r) = \frac{f}{B - 4\xi\displaystyle\int^{r}f},\]
+

where

+
+\[f(r) = \langle V^{2} \rangle \left(\frac{r\psi_{(r)}}{K_{\rm s} K_{\rm t}}\right) e^{4r\alpha_{\rm w}} = Ce^{-4\alpha_{\rm s}}.\]
+
+
Parameters:
+
    +
  • MSV (np.ndarray) – Input array containing \(\langle V^{2} \rangle\) data. If 1D, must be the same size as r. If 2D, its last dimension must match the size of r.

  • +
  • r (np.ndarray) – Radial distance to the probe array. Must be 1D, and match the last dimension of MSV.

  • +
  • Xi (float) – sediment asborption coefficient.

  • +
  • alpha_w (float) – water absorption coefficient.

  • +
  • psi (np.ndarray) – Near-field function. Must be 1D, and match the last dimension of MSV.

  • +
  • C0 (float | np.ndarray) – Reference concentration. Can be a float, or a 1D array matching the first dimension of MSV.

  • +
  • r0 (float) – Reference distance corresponding to C0.

  • +
  • delta_r (float, optional) – If not None, the reference concentration is then interpreted as an average between \(r-\delta r\) and \(r+\delta r\) (by default None).

  • +
  • n_interp (int, optional) – Number of point used in the interpolation of the input signal, by default 1000. It is advise to vary this parameter to find its lowest value above which the result becomes independant of it.

  • +
  • kind (str, optional) – Interpolation method used, by default “cubic”. Refer to the documentation of interp1d.

  • +
+
+
Returns:
+

    +
  • C (np.ndarray) – Inferred concentration.

  • +
  • f (np.ndarray) – Integrated array during the procedure. Returned to check the order of magnitudes over wich the integration is performed, and check possible numerical precision errors.

  • +
+

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.inversion.html b/_autosummary/pyudv.attenuation.inversion.html new file mode 100644 index 0000000..40e8203 --- /dev/null +++ b/_autosummary/pyudv.attenuation.inversion.html @@ -0,0 +1,541 @@ + + + + + + + + + + + pyudv.attenuation.inversion — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.inversion#

+

Functions

+ + + + + + + + + +

correction_factor

Compute the part of the mean squared voltage independet of the sediment concentration: \(\frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}}}\)

explicit_inversion

Use the following explicit solution to infer particle concentration from Mean Square Voltage (MSV, \(\langle V^{2} \rangle\)) data: :rtype: tuple[ndarray, ndarray]

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.near_field_theoretical.html b/_autosummary/pyudv.attenuation.near_field_theoretical.html new file mode 100644 index 0000000..9b46721 --- /dev/null +++ b/_autosummary/pyudv.attenuation.near_field_theoretical.html @@ -0,0 +1,583 @@ + + + + + + + + + + + pyudv.attenuation.near_field_theoretical — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.near_field_theoretical#

+
+
+near_field_theoretical(r, rn)[source]#
+

Return the near field function.

+
+
Parameters:
+
    +
  • r (scalar, array) – Radial coordinate.

  • +
  • rn (scalar, array) – Near field distance

  • +
+
+
Returns:
+

return the near field function.

+
+
Return type:
+

scalar, array

+
+
+

Examples

+
>>> r = np.linspace(0.1, 1, 100)
+>>> rn = 0.2
+>>> Psi = near_field_theoretical(r, rn)
+
+
+

References

+

[1] Downing, A., Thorne, P. D., & Vincent, C. E. (1995). Backscattering from a suspension in the near field of a piston transducer. The Journal of the Acoustical Society of America, 97(3), 1614-1620. +[2] Pedocchi, F., & García, M. H. (2012). Acoustic measurement of suspended sediment concentration profiles in an oscillatory boundary layer. Continental Shelf Research, 46, 87-95.

+
+ +
+

Examples using pyudv.attenuation.near_field_theoretical#

+
+

Concentration inference from amplitude signals

+
Concentration inference from amplitude signals
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi.html new file mode 100644 index 0000000..23fe11c --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi.html @@ -0,0 +1,557 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi#

+
+
+Chi(k, Rp)[source]#
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi_i.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi_i.html new file mode 100644 index 0000000..998729e --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi_i.html @@ -0,0 +1,557 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi_i — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.glass_sphere.Chi_i#

+
+
+Chi_i(k, Rp)[source]#
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Xi.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Xi.html new file mode 100644 index 0000000..ee27b13 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.Xi.html @@ -0,0 +1,557 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.glass_sphere.Xi — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.glass_sphere.Xi#

+
+
+Xi(k, Rp)[source]#
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.html new file mode 100644 index 0000000..d83dcf9 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.html @@ -0,0 +1,551 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.glass_sphere — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.glass_sphere#

+

Functions

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

Chi

Chi_i

Xi

trapezoid

Integrate along the given axis using the composite trapezoidal rule.

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.trapezoid.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.trapezoid.html new file mode 100644 index 0000000..b829ce0 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.glass_sphere.trapezoid.html @@ -0,0 +1,657 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.glass_sphere.trapezoid — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.glass_sphere.trapezoid#

+
+
+trapezoid(y, x=None, dx=1.0, axis=-1)[source]#
+

Integrate along the given axis using the composite trapezoidal rule.

+

If x is provided, the integration happens in sequence along its +elements - they are not sorted.

+

Integrate y (x) along each 1d slice on the given axis, compute +\(\int y(x) dx\). +When x is specified, this integrates along the parametric curve, +computing \(\int_t y(t) dt = +\int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt\).

+
+
Parameters:
+
    +
  • y (array_like) – Input array to integrate.

  • +
  • x (array_like, optional) – The sample points corresponding to the y values. If x is None, +the sample points are assumed to be evenly spaced dx apart. The +default is None.

  • +
  • dx (scalar, optional) – The spacing between sample points when x is None. The default is 1.

  • +
  • axis (int, optional) – The axis along which to integrate.

  • +
+
+
Returns:
+

trapezoid – Definite integral of y = n-dimensional array as approximated along +a single axis by the trapezoidal rule. If y is a 1-dimensional array, +then the result is a float. If n is greater than 1, then the result +is an n-1 dimensional array.

+
+
Return type:
+

float or ndarray

+
+
+
+

See also

+

cumulative_trapezoid, simpson, romb

+
+

Notes

+

Image [2] illustrates trapezoidal rule – y-axis locations of points +will be taken from y array, by default x-axis distances between +points will be 1.0, alternatively they can be provided with x array +or with dx scalar. Return value will be equal to combined area under +the red lines.

+

References

+ +

Examples

+

Use the trapezoidal rule on evenly spaced points:

+
>>> import numpy as np
+>>> from scipy import integrate
+>>> integrate.trapezoid([1, 2, 3])
+4.0
+
+
+

The spacing between sample points can be selected by either the +x or dx arguments:

+
>>> integrate.trapezoid([1, 2, 3], x=[4, 6, 8])
+8.0
+>>> integrate.trapezoid([1, 2, 3], dx=2)
+8.0
+
+
+

Using a decreasing x corresponds to integrating in reverse:

+
>>> integrate.trapezoid([1, 2, 3], x=[8, 6, 4])
+-8.0
+
+
+

More generally x is used to integrate along a parametric curve. We can +estimate the integral \(\int_0^1 x^2 = 1/3\) using:

+
>>> x = np.linspace(0, 1, num=50)
+>>> y = x**2
+>>> integrate.trapezoid(y, x)
+0.33340274885464394
+
+
+

Or estimate the area of a circle, noting we repeat the sample which closes +the curve:

+
>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True)
+>>> integrate.trapezoid(np.cos(theta), x=np.sin(theta))
+3.141571941375841
+
+
+

trapezoid can be applied along a specified axis to do multiple +computations in one call:

+
>>> a = np.arange(6).reshape(2, 3)
+>>> a
+array([[0, 1, 2],
+       [3, 4, 5]])
+>>> integrate.trapezoid(a, axis=0)
+array([1.5, 2.5, 3.5])
+>>> integrate.trapezoid(a, axis=1)
+array([2.,  8.])
+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.html new file mode 100644 index 0000000..2e70255 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.html @@ -0,0 +1,540 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi.html new file mode 100644 index 0000000..626f438 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi.html @@ -0,0 +1,557 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi#

+
+
+Chi(k, Rp)[source]#
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi_i.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi_i.html new file mode 100644 index 0000000..7962c05 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi_i.html @@ -0,0 +1,557 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi_i — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.quartz_sand.Chi_i#

+
+
+Chi_i(k, Rp)[source]#
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Xi.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Xi.html new file mode 100644 index 0000000..de6ca35 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.Xi.html @@ -0,0 +1,564 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.quartz_sand.Xi — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.quartz_sand.Xi#

+
+
+Xi(k, Rp, rho=2650.0)[source]#
+
+ +
+

Examples using pyudv.attenuation.sediment_acoustic_models.quartz_sand.Xi#

+
+

Concentration inference from amplitude signals

+
Concentration inference from amplitude signals
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.html new file mode 100644 index 0000000..fb05185 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.html @@ -0,0 +1,551 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.quartz_sand — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.quartz_sand#

+

Functions

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

Chi

Chi_i

Xi

trapezoid

Integrate along the given axis using the composite trapezoidal rule.

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.trapezoid.html b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.trapezoid.html new file mode 100644 index 0000000..5f91fea --- /dev/null +++ b/_autosummary/pyudv.attenuation.sediment_acoustic_models.quartz_sand.trapezoid.html @@ -0,0 +1,657 @@ + + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.quartz_sand.trapezoid — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sediment_acoustic_models.quartz_sand.trapezoid#

+
+
+trapezoid(y, x=None, dx=1.0, axis=-1)[source]#
+

Integrate along the given axis using the composite trapezoidal rule.

+

If x is provided, the integration happens in sequence along its +elements - they are not sorted.

+

Integrate y (x) along each 1d slice on the given axis, compute +\(\int y(x) dx\). +When x is specified, this integrates along the parametric curve, +computing \(\int_t y(t) dt = +\int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt\).

+
+
Parameters:
+
    +
  • y (array_like) – Input array to integrate.

  • +
  • x (array_like, optional) – The sample points corresponding to the y values. If x is None, +the sample points are assumed to be evenly spaced dx apart. The +default is None.

  • +
  • dx (scalar, optional) – The spacing between sample points when x is None. The default is 1.

  • +
  • axis (int, optional) – The axis along which to integrate.

  • +
+
+
Returns:
+

trapezoid – Definite integral of y = n-dimensional array as approximated along +a single axis by the trapezoidal rule. If y is a 1-dimensional array, +then the result is a float. If n is greater than 1, then the result +is an n-1 dimensional array.

+
+
Return type:
+

float or ndarray

+
+
+
+

See also

+

cumulative_trapezoid, simpson, romb

+
+

Notes

+

Image [2] illustrates trapezoidal rule – y-axis locations of points +will be taken from y array, by default x-axis distances between +points will be 1.0, alternatively they can be provided with x array +or with dx scalar. Return value will be equal to combined area under +the red lines.

+

References

+ +

Examples

+

Use the trapezoidal rule on evenly spaced points:

+
>>> import numpy as np
+>>> from scipy import integrate
+>>> integrate.trapezoid([1, 2, 3])
+4.0
+
+
+

The spacing between sample points can be selected by either the +x or dx arguments:

+
>>> integrate.trapezoid([1, 2, 3], x=[4, 6, 8])
+8.0
+>>> integrate.trapezoid([1, 2, 3], dx=2)
+8.0
+
+
+

Using a decreasing x corresponds to integrating in reverse:

+
>>> integrate.trapezoid([1, 2, 3], x=[8, 6, 4])
+-8.0
+
+
+

More generally x is used to integrate along a parametric curve. We can +estimate the integral \(\int_0^1 x^2 = 1/3\) using:

+
>>> x = np.linspace(0, 1, num=50)
+>>> y = x**2
+>>> integrate.trapezoid(y, x)
+0.33340274885464394
+
+
+

Or estimate the area of a circle, noting we repeat the sample which closes +the curve:

+
>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True)
+>>> integrate.trapezoid(np.cos(theta), x=np.sin(theta))
+3.141571941375841
+
+
+

trapezoid can be applied along a specified axis to do multiple +computations in one call:

+
>>> a = np.arange(6).reshape(2, 3)
+>>> a
+array([[0, 1, 2],
+       [3, 4, 5]])
+>>> integrate.trapezoid(a, axis=0)
+array([1.5, 2.5, 3.5])
+>>> integrate.trapezoid(a, axis=1)
+array([2.,  8.])
+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.attenuation.sound_velocity.html b/_autosummary/pyudv.attenuation.sound_velocity.html new file mode 100644 index 0000000..f0861d5 --- /dev/null +++ b/_autosummary/pyudv.attenuation.sound_velocity.html @@ -0,0 +1,578 @@ + + + + + + + + + + + pyudv.attenuation.sound_velocity — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.attenuation.sound_velocity#

+
+
+sound_velocity(T)[source]#
+

Compute sound velocity in fresh water in [m/s]

+
+
Parameters:
+

T (scalar, array) – Temperature in Celsius degrees.

+
+
Returns:
+

sound velocity in fresh water in [m/s]

+
+
Return type:
+

scalar, array

+
+
+

Examples

+
>>> T = 25
+>>> print(sound_velocity(T))
+
+
+

References

+

[1] Lubbers, J., & Graaff, R. (1998). A simple and accurate formula for the sound velocity in water. Ultrasound in medicine & biology, 24(7), 1065-1068.

+
+ +
+

Examples using pyudv.attenuation.sound_velocity#

+
+

Concentration inference from amplitude signals

+
Concentration inference from amplitude signals
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.E.html b/_autosummary/pyudv.geometry.Probe.E.html new file mode 100644 index 0000000..d6c8a5d --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.E.html @@ -0,0 +1,535 @@ + + + + + + + + + + + pyudv.geometry.Probe.E — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.E#

+

attribute

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.O.html b/_autosummary/pyudv.geometry.Probe.O.html new file mode 100644 index 0000000..0edb5e8 --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.O.html @@ -0,0 +1,535 @@ + + + + + + + + + + + pyudv.geometry.Probe.O — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.O#

+

attribute

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.Pref.html b/_autosummary/pyudv.geometry.Probe.Pref.html new file mode 100644 index 0000000..e973cdd --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.Pref.html @@ -0,0 +1,535 @@ + + + + + + + + + + + pyudv.geometry.Probe.Pref — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.Pref#

+

attribute

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.X_ref.html b/_autosummary/pyudv.geometry.Probe.X_ref.html new file mode 100644 index 0000000..83442ce --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.X_ref.html @@ -0,0 +1,535 @@ + + + + + + + + + + + pyudv.geometry.Probe.X_ref — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.X_ref#

+

attribute

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.alpha.html b/_autosummary/pyudv.geometry.Probe.alpha.html new file mode 100644 index 0000000..e08c8b8 --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.alpha.html @@ -0,0 +1,535 @@ + + + + + + + + + + + pyudv.geometry.Probe.alpha — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.alpha#

+

attribute

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.html b/_autosummary/pyudv.geometry.Probe.html new file mode 100644 index 0000000..1bab6e5 --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.html @@ -0,0 +1,620 @@ + + + + + + + + + + + pyudv.geometry.Probe — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe#

+
+
+class Probe(r, alpha, Pref)[source]#
+
+

A class used to represent a single probe.

+
+
+
Parameters:
+
    +
  • r (ndarray, (N,)) – a numpy array containing the radial coordinates of the beam.

  • +
  • alpha (float) – orientation of the probe, in degree in the trigonometric referential.

  • +
  • Pref (list[float, ndarray]) – A list a size 2 defining a reference point by containing its radial coordinate, and a numpy array containing its coordinate in the “real” reference space.

  • +
+
+
+

Methods

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

plot_probe(ax[, color])

Sketch the probe and its beam on a given matplotlib axe.

r_to_x(r)

Convert radial coordinates of the probe into x coordinates

r_to_z(r)

Convert radial coordinates of the probe into z coordinates

xz_to_r(xz[, axis])

Convert xz coordinates into probe radial coordinates

+

Attributes

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

Probe.r

vector along beam axis

Probe.alpha

beam axis inclination, trigo referential

Probe.Pref

reference point [r_ref, (x_ref, y_ref)]

Probe.r_ref

reference point radial coordinats

Probe.X_ref

reference point real coordinates

Probe.unit_vec

unit vector defining the beam direction in real coordinates

Probe.O

coordinates of the origin of the beam

Probe.E

coordinates of the end of the beam

+
+ +
+

Examples using pyudv.geometry.Probe#

+
+

Sketch multiple probes

+
Sketch multiple probes
+
+

Probes and velocity reconstruction

+
Probes and velocity reconstruction
+
+
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.plot_probe.html b/_autosummary/pyudv.geometry.Probe.plot_probe.html new file mode 100644 index 0000000..7d28517 --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.plot_probe.html @@ -0,0 +1,573 @@ + + + + + + + + + + + pyudv.geometry.Probe.plot_probe — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.plot_probe#

+
+
+Probe.plot_probe(ax, color=None)[source]#
+

Sketch the probe and its beam on a given matplotlib axe.

+
+
Parameters:
+
    +
  • ax (mplaxes.Axes) – matplotlib axe on which the probe is sketched.

  • +
  • color (str, optional) – probe color, by default None

  • +
+
+
+
+ +
+

Examples using pyudv.geometry.Probe.plot_probe#

+
+

Sketch multiple probes

+
Sketch multiple probes
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.r.html b/_autosummary/pyudv.geometry.Probe.r.html new file mode 100644 index 0000000..3779d6e --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.r.html @@ -0,0 +1,535 @@ + + + + + + + + + + + pyudv.geometry.Probe.r — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.r#

+

attribute

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.r_ref.html b/_autosummary/pyudv.geometry.Probe.r_ref.html new file mode 100644 index 0000000..ef2f357 --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.r_ref.html @@ -0,0 +1,535 @@ + + + + + + + + + + + pyudv.geometry.Probe.r_ref — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.r_ref#

+

attribute

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.r_to_x.html b/_autosummary/pyudv.geometry.Probe.r_to_x.html new file mode 100644 index 0000000..1217acc --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.r_to_x.html @@ -0,0 +1,572 @@ + + + + + + + + + + + pyudv.geometry.Probe.r_to_x — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.r_to_x#

+
+
+Probe.r_to_x(r)[source]#
+

Convert radial coordinates of the probe into x coordinates

+
+
Return type:
+

ndarray | float

+
+
Parameters:
+

r (np.ndarray | float) – corresponding x coordinate

+
+
Returns:
+

corresponding z coordinate

+
+
Return type:
+

np.ndarray | float

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.r_to_z.html b/_autosummary/pyudv.geometry.Probe.r_to_z.html new file mode 100644 index 0000000..5f0a804 --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.r_to_z.html @@ -0,0 +1,572 @@ + + + + + + + + + + + pyudv.geometry.Probe.r_to_z — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.r_to_z#

+
+
+Probe.r_to_z(r)[source]#
+

Convert radial coordinates of the probe into z coordinates

+
+
Return type:
+

ndarray | float

+
+
Parameters:
+

r (np.ndarray | float) – radial coordinate

+
+
Returns:
+

corresponding z coordinate

+
+
Return type:
+

np.ndarray | float

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.unit_vec.html b/_autosummary/pyudv.geometry.Probe.unit_vec.html new file mode 100644 index 0000000..1bbe132 --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.unit_vec.html @@ -0,0 +1,535 @@ + + + + + + + + + + + pyudv.geometry.Probe.unit_vec — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.unit_vec#

+

attribute

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.Probe.xz_to_r.html b/_autosummary/pyudv.geometry.Probe.xz_to_r.html new file mode 100644 index 0000000..0daa630 --- /dev/null +++ b/_autosummary/pyudv.geometry.Probe.xz_to_r.html @@ -0,0 +1,575 @@ + + + + + + + + + + + pyudv.geometry.Probe.xz_to_r — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.Probe.xz_to_r#

+
+
+Probe.xz_to_r(xz, axis=-1)[source]#
+

Convert xz coordinates into probe radial coordinates

+
+
Return type:
+

ndarray

+
+
Parameters:
+
    +
  • xz (np.ndarray) – xz coordinate

  • +
  • axis (int, optional) – axis along which the norm is calculated, by default -1

  • +
+
+
Returns:
+

radial coordinates

+
+
Return type:
+

np.ndarray

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.average_amplitude.html b/_autosummary/pyudv.geometry.average_amplitude.html new file mode 100644 index 0000000..4d77da5 --- /dev/null +++ b/_autosummary/pyudv.geometry.average_amplitude.html @@ -0,0 +1,576 @@ + + + + + + + + + + + pyudv.geometry.average_amplitude — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.average_amplitude#

+
+
+average_amplitude(a1, a2, probe1, probe2)[source]#
+

This function takes the amplitude measured by two probes and average them, assuming that it only depends on the vertical coordinate.

+
+
Return type:
+

tuple[ndarray, ndarray, ndarray, ndarray, ndarray, ndarray]

+
+
Parameters:
+
    +
  • a1 (npt.ArrayLike) – amplitude measured by first probe. The first dimension should be the same dimension as the radial coordinate contained in probe1.z.

  • +
  • a2 (npt.ArrayLike) – amplitude measured by second probe. The first dimension should be the same dimension as the radial coordinate contained in probe2.z.

  • +
  • probe1 (Probe) – First Probe object.

  • +
  • probe2 (Probe) – Second Probe object.

  • +
+
+
Returns:
+

    +
  • A (ndarray) – averaged amplitud in the coordinate system corresponding to the one of the reference points of the probes.

  • +
  • z_interp (ndarray) – coordinate vector corresponding to U

  • +
  • X (ndarray) – crossing point of the probes

  • +
  • dx_1 (ndarray) – horizontal distance between the first probe beam, and the vertical axis passing by the crossing point X

  • +
  • dx_2 (ndarray) – horizontal distance between the second probe beam, and the vertical axis passing by the crossing point X

  • +
+

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.compute_vertical_axis.html b/_autosummary/pyudv.geometry.compute_vertical_axis.html new file mode 100644 index 0000000..4801ac4 --- /dev/null +++ b/_autosummary/pyudv.geometry.compute_vertical_axis.html @@ -0,0 +1,569 @@ + + + + + + + + + + + pyudv.geometry.compute_vertical_axis — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.compute_vertical_axis#

+
+
+compute_vertical_axis(probe1, probe2)[source]#
+

compute the common vertical axis between two probe beams.

+
+
Parameters:
+
    +
  • probe1 (Probe) – First Probe object.

  • +
  • probe2 (Probe) – Second Probe object.

  • +
+
+
Returns:
+

    +
  • z_interp (ndarray) – numpy array containg the vertical coordinates of the common axis.

  • +
  • z_min (float) – minimal vertical coordinate

  • +
  • z_max (float) – maximal vertical coordinate

  • +
+

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.html b/_autosummary/pyudv.geometry.html new file mode 100644 index 0000000..8b350cf --- /dev/null +++ b/_autosummary/pyudv.geometry.html @@ -0,0 +1,555 @@ + + + + + + + + + + + pyudv.geometry — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry#

+

This module helps you deal with probe geometries.

+

Functions

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

average_amplitude

This function takes the amplitude measured by two probes and average them, assuming that it only depends on the vertical coordinate.

compute_vertical_axis

compute the common vertical axis between two probe beams.

probe_crossing_point

calculate the crossing point of two probe beams.

reconstruct_velocity

This function takes the velocities measured by two probes, and reconstruct the velocity field, assuming that it only depends on the vertical coordinate.

sketch_probes

Sketch multiple probes, and optionaly their intersections, etc ...

+

Classes

+ + + + + + +

Probe

A class used to represent a single probe.

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.probe_crossing_point.html b/_autosummary/pyudv.geometry.probe_crossing_point.html new file mode 100644 index 0000000..8303b8c --- /dev/null +++ b/_autosummary/pyudv.geometry.probe_crossing_point.html @@ -0,0 +1,570 @@ + + + + + + + + + + + pyudv.geometry.probe_crossing_point — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.probe_crossing_point#

+
+
+probe_crossing_point(probe1, probe2)[source]#
+

calculate the crossing point of two probe beams.

+
+
Return type:
+

ndarray

+
+
Parameters:
+
    +
  • probe1 (Probe) – First Probe object.

  • +
  • probe2 (Probe) – Second Probe object.

  • +
+
+
Returns:
+

coordinates of the crossing point.

+
+
Return type:
+

ndarray, (2. )

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.reconstruct_velocity.html b/_autosummary/pyudv.geometry.reconstruct_velocity.html new file mode 100644 index 0000000..c092658 --- /dev/null +++ b/_autosummary/pyudv.geometry.reconstruct_velocity.html @@ -0,0 +1,583 @@ + + + + + + + + + + + pyudv.geometry.reconstruct_velocity — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.reconstruct_velocity#

+
+
+reconstruct_velocity(u1, u2, probe1, probe2)[source]#
+

This function takes the velocities measured by two probes, and reconstruct the velocity field, assuming that it only depends on the vertical coordinate.

+
+
Return type:
+

tuple[ndarray, ndarray, ndarray, ndarray, ndarray, ndarray]

+
+
Parameters:
+
    +
  • u1 (ArrayLike) – velocity vector measured by first probe. The first dimension should be the same dimension as the radial coordinate contained in probe1.z.

  • +
  • u2 (ArrayLike) – velocity vector measured by second probe. The first dimension should be the same dimension as the radial coordinate contained in probe2.z.

  • +
  • probe1 (Probe) – First Probe object.

  • +
  • probe2 (Probe) – Second Probe object.

  • +
+
+
Returns:
+

    +
  • U (ndarray) – reconstructed velocity components in the coordinate system corresponding to the one of the reference points of the probes.

  • +
  • z_interp (ndarray) – coordinate vector corresponding to U

  • +
  • X (ndarray) – crossing point of the probes

  • +
  • dx_1 (ndarray) – horizontal distance between the first probe beam, and the vertical axis passing by the crossing point X

  • +
  • dx_2 (ndarray) – horizontal distance between the second probe beam, and the vertical axis passing by the crossing point X

  • +
+

+
+
+
+ +
+

Examples using pyudv.geometry.reconstruct_velocity#

+
+

Probes and velocity reconstruction

+
Probes and velocity reconstruction
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.geometry.sketch_probes.html b/_autosummary/pyudv.geometry.sketch_probes.html new file mode 100644 index 0000000..dc5eeff --- /dev/null +++ b/_autosummary/pyudv.geometry.sketch_probes.html @@ -0,0 +1,574 @@ + + + + + + + + + + + pyudv.geometry.sketch_probes — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.geometry.sketch_probes#

+
+
+sketch_probes(probes, combinations=None, ax=None, probe_colors=None, combination_colors=None)[source]#
+

Sketch multiple probes, and optionaly their intersections, etc …

+
+
Parameters:
+
    +
  • probes (list[Probe]) – list of Probe object to be sketched.

  • +
  • combinations (list[tuple[int, int]], optional) – list of tuple of size 2 containing indexes of probes whose intersection should be sketched.

  • +
  • ax (mplaxes.Axes, optional) – matplotlib axe on which the sketch is drawn. If None, a new figure is created (default is None).

  • +
  • probe_colors (list[str], optional) – list of colors for the probes, by default None. It should be the same size as probes.

  • +
  • combination_colors (list[str], optional) – list of colors for the intersetctions, by default None. It should be the same size as combinations.

  • +
+
+
+
+ +
+

Examples using pyudv.geometry.sketch_probes#

+
+

Sketch multiple probes

+
Sketch multiple probes
+
+

Probes and velocity reconstruction

+
Probes and velocity reconstruction
+
+
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.helpers.compute_common_part.html b/_autosummary/pyudv.helpers.compute_common_part.html new file mode 100644 index 0000000..28cb2d0 --- /dev/null +++ b/_autosummary/pyudv.helpers.compute_common_part.html @@ -0,0 +1,572 @@ + + + + + + + + + + + pyudv.helpers.compute_common_part — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.helpers.compute_common_part#

+
+
+compute_common_part(vec1, vec2)[source]#
+

Compute the common part between two vector, and return it. If it is not exactly colocated, it returns a interpolation with the same number of points betwen the bounds common to the two arrays.

+
+
Return type:
+

tuple[ndarray, float, float]

+
+
Parameters:
+
    +
  • vec1 (np.ndarray) – first 1D array.

  • +
  • vec2 (np.ndarray) – second 1D array.

  • +
+
+
Returns:
+

    +
  • z_interp (np.ndarray) – interpolated vector

  • +
  • z_min (float) – lower bound

  • +
  • z_max (float) – higher bound

  • +
+

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.helpers.create_arboresence.html b/_autosummary/pyudv.helpers.create_arboresence.html new file mode 100644 index 0000000..3e3a669 --- /dev/null +++ b/_autosummary/pyudv.helpers.create_arboresence.html @@ -0,0 +1,552 @@ + + + + + + + + + + + pyudv.helpers.create_arboresence — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.helpers.create_arboresence#

+
+
+create_arboresence(path)[source]#
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.helpers.html b/_autosummary/pyudv.helpers.html new file mode 100644 index 0000000..1b4ad3f --- /dev/null +++ b/_autosummary/pyudv.helpers.html @@ -0,0 +1,549 @@ + + + + + + + + + + + pyudv.helpers — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.helpers.moving_std.html b/_autosummary/pyudv.helpers.moving_std.html new file mode 100644 index 0000000..f7291bf --- /dev/null +++ b/_autosummary/pyudv.helpers.moving_std.html @@ -0,0 +1,568 @@ + + + + + + + + + + + pyudv.helpers.moving_std — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.helpers.moving_std#

+
+
+moving_std(arr, size, **kwargs)[source]#
+

Rolling standard deviation on n-dimensional arrays.

+
+
Parameters:
+
    +
  • arr (array) – Input array

  • +
  • size (int) – The sizes of the uniform filter are given for each axis as a sequence, or as a single number, in which case the size is equal for all axes.

  • +
  • **kwargs – Optional parameters passed to scipy.ndimage.uniform_filter

  • +
+
+
Returns:
+

Array of standard deviation

+
+
Return type:
+

array

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.helpers.moving_std1d.html b/_autosummary/pyudv.helpers.moving_std1d.html new file mode 100644 index 0000000..66c33ab --- /dev/null +++ b/_autosummary/pyudv.helpers.moving_std1d.html @@ -0,0 +1,569 @@ + + + + + + + + + + + pyudv.helpers.moving_std1d — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.helpers.moving_std1d#

+
+
+moving_std1d(arr, windows, axis=-1, **kwargs)[source]#
+

Rolling standard deviation on 1 dimension of the input array.

+
+
Parameters:
+
    +
  • arr (array) – Input array

  • +
  • windows (int) – windows over wich the standard deviation is calculated.

  • +
  • axis (int) – axis along which the standard deviation is calculated. (the default is -1).

  • +
  • **kwargs – Optional parameters passed to scipy.ndimage.uniform_filter1d

  • +
+
+
Returns:
+

Array of standard deviation

+
+
Return type:
+

array

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.helpers.uniform_filter.html b/_autosummary/pyudv.helpers.uniform_filter.html new file mode 100644 index 0000000..8e62cc1 --- /dev/null +++ b/_autosummary/pyudv.helpers.uniform_filter.html @@ -0,0 +1,638 @@ + + + + + + + + + + + pyudv.helpers.uniform_filter — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.helpers.uniform_filter#

+
+
+uniform_filter(input, size=3, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)[source]#
+

Multidimensional uniform filter.

+
+
Parameters:
+
    +
  • input (array_like) – The input array.

  • +
  • size (int or sequence of ints, optional) – The sizes of the uniform filter are given for each axis as a +sequence, or as a single number, in which case the size is +equal for all axes.

  • +
  • output (array or dtype, optional) – The array in which to place the output, or the dtype of the +returned array. By default an array of the same dtype as input +will be created.

  • +
  • mode (str or sequence, optional) –

    The mode parameter determines how the input array is extended +when the filter overlaps a border. By passing a sequence of modes +with length equal to the number of dimensions of the input array, +different modes can be specified along each axis. Default value is +‘reflect’. The valid values and their behavior is as follows:

    +
    +
    ’reflect’ (d c b a | a b c d | d c b a)

    The input is extended by reflecting about the edge of the last +pixel. This mode is also sometimes referred to as half-sample +symmetric.

    +
    +
    ’constant’ (k k k k | a b c d | k k k k)

    The input is extended by filling all values beyond the edge with +the same constant value, defined by the cval parameter.

    +
    +
    ’nearest’ (a a a a | a b c d | d d d d)

    The input is extended by replicating the last pixel.

    +
    +
    ’mirror’ (d c b | a b c d | c b a)

    The input is extended by reflecting about the center of the last +pixel. This mode is also sometimes referred to as whole-sample +symmetric.

    +
    +
    ’wrap’ (a b c d | a b c d | a b c d)

    The input is extended by wrapping around to the opposite edge.

    +
    +
    +

    For consistency with the interpolation functions, the following mode +names can also be used:

    +
    +
    ’grid-constant’

    This is a synonym for ‘constant’.

    +
    +
    ’grid-mirror’

    This is a synonym for ‘reflect’.

    +
    +
    ’grid-wrap’

    This is a synonym for ‘wrap’.

    +
    +
    +

  • +
  • cval (scalar, optional) – Value to fill past edges of input if mode is ‘constant’. Default +is 0.0.

  • +
  • origin (int or sequence, optional) – Controls the placement of the filter on the input array’s pixels. +A value of 0 (the default) centers the filter over the pixel, with +positive values shifting the filter to the left, and negative ones +to the right. By passing a sequence of origins with length equal to +the number of dimensions of the input array, different shifts can +be specified along each axis.

  • +
  • axes (tuple of int or None, optional) – If None, input is filtered along all axes. Otherwise, +input is filtered along the specified axes. When axes is +specified, any tuples used for size, origin, and/or mode +must match the length of axes. The ith entry in any of these tuples +corresponds to the ith entry in axes.

  • +
+
+
Returns:
+

uniform_filter – Filtered array. Has the same shape as input.

+
+
Return type:
+

ndarray

+
+
+

Notes

+

The multidimensional filter is implemented as a sequence of +1-D uniform filters. The intermediate arrays are stored +in the same data type as the output. Therefore, for output types +with a limited precision, the results may be imprecise because +intermediate results may be stored with insufficient precision.

+

Examples

+
>>> from scipy import ndimage, datasets
+>>> import matplotlib.pyplot as plt
+>>> fig = plt.figure()
+>>> plt.gray()  # show the filtered result in grayscale
+>>> ax1 = fig.add_subplot(121)  # left side
+>>> ax2 = fig.add_subplot(122)  # right side
+>>> ascent = datasets.ascent()
+>>> result = ndimage.uniform_filter(ascent, size=20)
+>>> ax1.imshow(ascent)
+>>> ax2.imshow(result)
+>>> plt.show()
+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.helpers.uniform_filter1d.html b/_autosummary/pyudv.helpers.uniform_filter1d.html new file mode 100644 index 0000000..c8ecc87 --- /dev/null +++ b/_autosummary/pyudv.helpers.uniform_filter1d.html @@ -0,0 +1,610 @@ + + + + + + + + + + + pyudv.helpers.uniform_filter1d — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.helpers.uniform_filter1d#

+
+
+uniform_filter1d(input, size, axis=-1, output=None, mode='reflect', cval=0.0, origin=0)[source]#
+

Calculate a 1-D uniform filter along the given axis.

+

The lines of the array along the given axis are filtered with a +uniform filter of given size.

+
+
Parameters:
+
    +
  • input (array_like) – The input array.

  • +
  • size (int) – length of uniform filter

  • +
  • axis (int, optional) – The axis of input along which to calculate. Default is -1.

  • +
  • output (array or dtype, optional) – The array in which to place the output, or the dtype of the +returned array. By default an array of the same dtype as input +will be created.

  • +
  • mode ({'reflect', 'constant', 'nearest', 'mirror', 'wrap'}, optional) –

    The mode parameter determines how the input array is extended +beyond its boundaries. Default is ‘reflect’. Behavior for each valid +value is as follows:

    +
    +
    ’reflect’ (d c b a | a b c d | d c b a)

    The input is extended by reflecting about the edge of the last +pixel. This mode is also sometimes referred to as half-sample +symmetric.

    +
    +
    ’constant’ (k k k k | a b c d | k k k k)

    The input is extended by filling all values beyond the edge with +the same constant value, defined by the cval parameter.

    +
    +
    ’nearest’ (a a a a | a b c d | d d d d)

    The input is extended by replicating the last pixel.

    +
    +
    ’mirror’ (d c b | a b c d | c b a)

    The input is extended by reflecting about the center of the last +pixel. This mode is also sometimes referred to as whole-sample +symmetric.

    +
    +
    ’wrap’ (a b c d | a b c d | a b c d)

    The input is extended by wrapping around to the opposite edge.

    +
    +
    +

    For consistency with the interpolation functions, the following mode +names can also be used:

    +
    +
    ’grid-mirror’

    This is a synonym for ‘reflect’.

    +
    +
    ’grid-constant’

    This is a synonym for ‘constant’.

    +
    +
    ’grid-wrap’

    This is a synonym for ‘wrap’.

    +
    +
    +

  • +
  • cval (scalar, optional) – Value to fill past edges of input if mode is ‘constant’. Default +is 0.0.

  • +
  • origin (int, optional) – Controls the placement of the filter on the input array’s pixels. +A value of 0 (the default) centers the filter over the pixel, with +positive values shifting the filter to the left, and negative ones +to the right.

  • +
+
+
+

Examples

+
>>> from scipy.ndimage import uniform_filter1d
+>>> uniform_filter1d([2, 8, 0, 4, 1, 9, 9, 0], size=3)
+array([4, 3, 4, 1, 4, 6, 6, 3])
+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.html b/_autosummary/pyudv.html new file mode 100644 index 0000000..65d3569 --- /dev/null +++ b/_autosummary/pyudv.html @@ -0,0 +1,540 @@ + + + + + + + + + + + pyudv — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv#

+

Modules

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

pyudv.attenuation

The amplitude model is currently under development, and yet undocumented.

pyudv.geometry

This module helps you deal with probe geometries.

pyudv.helpers

pyudv.read_mfprof

This module allows you to read .mfprof files from Met-Flow UDVs, and extract the contained data.

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.read_mfprof.amplitude_from_UVPdata.html b/_autosummary/pyudv.read_mfprof.amplitude_from_UVPdata.html new file mode 100644 index 0000000..f9358c4 --- /dev/null +++ b/_autosummary/pyudv.read_mfprof.amplitude_from_UVPdata.html @@ -0,0 +1,573 @@ + + + + + + + + + + + pyudv.read_mfprof.amplitude_from_UVPdata — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.read_mfprof.amplitude_from_UVPdata#

+
+
+amplitude_from_UVPdata(raw_data, z, GainStart, GainEnd, zend, zstart=0.00037, Nbytes=14, deltaV=5)[source]#
+

Correct the raw amplitude data as outut of the UVP-DUO.

+
+
Parameters:
+
    +
  • raw_data (scalar, array) – raw echo signal before demodulation outputted by the UVP.

  • +
  • z (scalar, array) – position corresponding to raw_data.

  • +
  • GainStart (scalar) – start absolute gain.

  • +
  • GainEnd (scalar) – end absolute gain.

  • +
  • zend (float) – Maximum measurable distance by the UVP.

  • +
  • zstart (float) – minimum measurable distance by the UVP (the default is 0.00037)).

  • +
  • Nbytes (int) – Number of bytes over which the raw data are coded (the default is 14).

  • +
  • deltaV (int) – Volt range corresponding to the number of bytes (the default is 5).

  • +
+
+
Returns:
+

Unamplified/corrected echo signal.

+
+
Return type:
+

scalar, array

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.read_mfprof.amplitude_from_mfprof_reading.html b/_autosummary/pyudv.read_mfprof.amplitude_from_mfprof_reading.html new file mode 100644 index 0000000..5e1ac17 --- /dev/null +++ b/_autosummary/pyudv.read_mfprof.amplitude_from_mfprof_reading.html @@ -0,0 +1,577 @@ + + + + + + + + + + + pyudv.read_mfprof.amplitude_from_mfprof_reading — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.read_mfprof.amplitude_from_mfprof_reading#

+
+
+amplitude_from_mfprof_reading(Data, Parameters, Nbytes=14, deltaV=5)[source]#
+

Calculate the unamplified/corrected echo signal from Data and Parameters dictionnaries as output of read_mfprof, +using the function amplitude_from_UVPdata.

+
+
Parameters:
+
    +
  • Data (dict) – Data dictionnary coming from read_mfprof.

  • +
  • Parameters (dict) – Parameters dictionnary coming from read_mfprof.

  • +
  • Nbytes (int) – Number of bytes over which the raw data are coded (the default is 14).

  • +
  • deltaV (int) – Volt range corresponding to the number of bytes (the default is 5).

  • +
+
+
Returns:
+

Unamplified/corrected echo signal.

+
+
Return type:
+

scalar, array

+
+
+
+ +
+

Examples using pyudv.read_mfprof.amplitude_from_mfprof_reading#

+
+

Read and plot .mfprof data

+
Read and plot .mfprof data
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.read_mfprof.html b/_autosummary/pyudv.read_mfprof.html new file mode 100644 index 0000000..fe69972 --- /dev/null +++ b/_autosummary/pyudv.read_mfprof.html @@ -0,0 +1,553 @@ + + + + + + + + + + + pyudv.read_mfprof — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.read_mfprof#

+

This module allows you to read .mfprof files from Met-Flow UDVs, and extract the contained data.

+

Functions

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

amplitude_from_UVPdata

Correct the raw amplitude data as outut of the UVP-DUO.

amplitude_from_mfprof_reading

Calculate the unamplified/corrected echo signal from Data and Parameters dictionnaries as output of read_mfprof, using the function amplitude_from_UVPdata.

mfprof_to_netcdf

Convert a .mfprof file to a netCDF file.

read_mfprof

Read .mfprof binary files of the Met-Flow UDV.

velocity_from_UVPdata

Calculate velocity from UDV raw data.

velocity_from_mfprof_reading

Calculate velocity from Data and Parameters dictionnaries as output of read_mfprof, using the function velocity_from_UVPdata.

write_dictionnary

Write parameter dictionnary to a .txt file.

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.read_mfprof.mfprof_to_netcdf.html b/_autosummary/pyudv.read_mfprof.mfprof_to_netcdf.html new file mode 100644 index 0000000..ee1cf81 --- /dev/null +++ b/_autosummary/pyudv.read_mfprof.mfprof_to_netcdf.html @@ -0,0 +1,567 @@ + + + + + + + + + + + pyudv.read_mfprof.mfprof_to_netcdf — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.read_mfprof.mfprof_to_netcdf#

+
+
+mfprof_to_netcdf(input_mfprof, output_netcdf, add_attr=None, cut_zeros=True)[source]#
+

Convert a .mfprof file to a netCDF file.

+
+
Parameters:
+
    +
  • input_mfprof (str) – input .mfprof file path

  • +
  • output_netcdf (str | object) – output netCDF file path, or netCDF4 object (Dataset, Group) in which the data will be stored.

  • +
  • add_attr (dict, optional) – dictionnary containing attributes to be added to the netCDF file, by default None. For example, add_attr = {name: ‘John Smith’, team: ‘the best’}

  • +
  • cut_zeros (bool, optional) – If True, cut the measurements data and remove all the trailing 0 added when the measurements are stopped bedore the attributed time, by default True

  • +
+
+
+

Example

+
>>> mfprof_to_netcdf('input.mfprof', 'output.nc', add_attr = {name: 'John Smith', team: 'the best'}, cut_zeros=True)
+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.read_mfprof.read_mfprof.html b/_autosummary/pyudv.read_mfprof.read_mfprof.html new file mode 100644 index 0000000..2be67f2 --- /dev/null +++ b/_autosummary/pyudv.read_mfprof.read_mfprof.html @@ -0,0 +1,578 @@ + + + + + + + + + + + pyudv.read_mfprof.read_mfprof — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.read_mfprof.read_mfprof#

+
+
+read_mfprof(fileName, SI_units=True, convert_time=True)[source]#
+

Read .mfprof binary files of the Met-Flow UDV. This is mostly a direct python translation of the matlab script given by Met-Flow.

+
+
Parameters:
+
    +
  • fileName (str) – Path to the .mfprof file.

  • +
  • SI_units (bool) – If True, convert units to the international system (the default is True).

  • +
  • convert_time (bool) – If True, convert the time vector into seconds (the default is True).

  • +
+
+
Returns:
+

    +
  • Data (dict) – Dictionnary with the data stored in the mprof files. Available keys are: ‘transducer’, ‘profileTime’, ‘DopplerData’, ‘AmplitudeData’, ‘DistanceAlongBeam’

  • +
  • Parameters (dict) – Dictionnary with the parameters used in the UVP software when sampling the data. See UVP documentation for detail. Keys are: ‘Frequency’, ‘StartChannel’, ‘ChannelDistance’, ‘ChannelWidth’, ‘MaximumDepth’, ‘SoundSpeed’, ‘Angle’, ‘GainStart’, ‘GainEnd’, ‘Voltage’, ‘Iterations’, ‘NoiseLevel’, ‘CyclesPerPulse’, ‘TriggerMode’, ‘TriggerModeName’, ‘ProfileLength’, ‘ProfilesPerBlock’, ‘Blocks’, ‘AmplitudeStored’, ‘DoNotStoreDoppler’, ‘RawDataMin’, ‘RawDataMax’, ‘RawDataRange’, ‘AmplDataMin’, ‘AmplDataMax’, ‘VelocityInterpretingMode’, ‘UserSampleTime’, ‘SampleTime’, ‘UseMultiplexer’, ‘FlowMapping’, ‘FirstValidChannel’, ‘LastValidChannel’, ‘FlowRateType’, ‘PeriodEnhOffset’, ‘PeriodEnhPeriod’, ‘PeriodEnhNCycles’, ‘Comment’, ‘MeasurementProtocol’, ‘NumberOfCycles’, ‘CycleDelay’, ‘Version’, ‘Table’

  • +
  • Infos (dict) – Dictionnary with some informations stored during sampling of the data. Keys are ‘Signum’, ‘measParamsOffset’, ‘nProfiles’, ‘reserved1’, ‘flags’, ‘recordSize’, ‘nChannels’, ‘reserved2’, ‘startTime’.

  • +
  • Units (dict) – Dictionnary with the units of the variables stored in the other dictionnaries. Keys are the name of the variables.

  • +
+

+
+
+
+ +
+

Examples using pyudv.read_mfprof.read_mfprof#

+
+

Read and plot .mfprof data

+
Read and plot .mfprof data
+
+
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.read_mfprof.velocity_from_UVPdata.html b/_autosummary/pyudv.read_mfprof.velocity_from_UVPdata.html new file mode 100644 index 0000000..1215c17 --- /dev/null +++ b/_autosummary/pyudv.read_mfprof.velocity_from_UVPdata.html @@ -0,0 +1,571 @@ + + + + + + + + + + + pyudv.read_mfprof.velocity_from_UVPdata — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.read_mfprof.velocity_from_UVPdata#

+
+
+velocity_from_UVPdata(raw_data, SoundSpeed, MaximumDepth, Angle, Frequency, Nbytes=8)[source]#
+

Calculate velocity from UDV raw data. Units must be checked outside of this function - no conversion is done here.

+
+
Parameters:
+
    +
  • raw_data (float, numpy array) – Raw data coming out of the UDV.

  • +
  • SoundSpeed (float) – Sound velocity.

  • +
  • MaximumDepth (float) – Maximum depth measurement, as defined by the Pulse Repetition Frequency.

  • +
  • Angle (float) – Angle between the probe and the flow direction.

  • +
  • Frequency (float) – Frequency of the probe.

  • +
  • Nbytes (int) – Number of bytes over which the raw data are coded (the default is 8).

  • +
+
+
Returns:
+

Velocity field

+
+
Return type:
+

float, numpy array

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.read_mfprof.velocity_from_mfprof_reading.html b/_autosummary/pyudv.read_mfprof.velocity_from_mfprof_reading.html new file mode 100644 index 0000000..1844f19 --- /dev/null +++ b/_autosummary/pyudv.read_mfprof.velocity_from_mfprof_reading.html @@ -0,0 +1,576 @@ + + + + + + + + + + + pyudv.read_mfprof.velocity_from_mfprof_reading — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.read_mfprof.velocity_from_mfprof_reading#

+
+
+velocity_from_mfprof_reading(Data, Parameters, Nbytes=8)[source]#
+

Calculate velocity from Data and Parameters dictionnaries as output of read_mfprof, +using the function velocity_from_UVPdata.

+
+
Parameters:
+
    +
  • Data (dict) – Data dictionnary coming from read_mfprof.

  • +
  • Parameters (dict) – Parameters dictionnary coming from read_mfprof.

  • +
  • Nbytes (int) – Number of bytes over which the raw data are coded (the default is 8).

  • +
+
+
Returns:
+

Velocity field

+
+
Return type:
+

float, numpy array

+
+
+
+ +
+

Examples using pyudv.read_mfprof.velocity_from_mfprof_reading#

+
+

Read and plot .mfprof data

+
Read and plot .mfprof data
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_autosummary/pyudv.read_mfprof.write_dictionnary.html b/_autosummary/pyudv.read_mfprof.write_dictionnary.html new file mode 100644 index 0000000..cef1f67 --- /dev/null +++ b/_autosummary/pyudv.read_mfprof.write_dictionnary.html @@ -0,0 +1,564 @@ + + + + + + + + + + + pyudv.read_mfprof.write_dictionnary — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

pyudv.read_mfprof.write_dictionnary#

+
+
+write_dictionnary(dico, file)[source]#
+

Write parameter dictionnary to a .txt file. +Each line of this file is a dictionnary key, followed by the corresponding entry, directly converted using str.

+
+
Parameters:
+
    +
  • dico (dict) – input dictionnary

  • +
  • file (str) – output txt file.

  • +
+
+
Returns:
+

Nothing.

+
+
+
+ +
+ + +
+ + + + + +
+ + + +
+ + +
+
+ +
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/_downloads/041e21a5dcf4665a558ec24266dc2579/plot_reconstruct_velocity.py b/_downloads/041e21a5dcf4665a558ec24266dc2579/plot_reconstruct_velocity.py new file mode 100644 index 0000000..31a8de3 --- /dev/null +++ b/_downloads/041e21a5dcf4665a558ec24266dc2579/plot_reconstruct_velocity.py @@ -0,0 +1,67 @@ +""" +================================== +Probes and velocity reconstruction +================================== +""" + +import matplotlib.pyplot as plt +import numpy as np + +from pyudv.geometry import Probe, sketch_probes, reconstruct_velocity + + +def U(z): + u = 5 * (5 - z) ** 2 + v = u / 10 + U = np.array([u, v]) + return U + + +# %% +# Define probes and plot them +# =========================== + +# define probes +r = np.linspace(0, 5, 100) +alpha1, alpha2 = -120, -70 # deg +O1, O2 = np.array([1, 8]), np.array([-1, 7]) +probe1_pars = [r, alpha1, [0, O1]] +probe2_pars = [r, alpha2, [0, O2]] +# +probe1 = Probe(*probe1_pars) +probe2 = Probe(*probe2_pars) + +fig, ax = plt.subplots(1, 1, layout="constrained") +sketch_probes( + [probe1, probe2], + combinations=[[0, 1]], + combination_colors=["k"], + ax=ax, +) +ax.set_xlabel("x") +ax.set_ylabel("y") +plt.show() + +# %% +# Create fake signal +# ================== + +u1 = U(probe1.z).T @ probe1.unit_vec +u2 = U(probe2.z).T @ probe2.unit_vec + +# %% +# Velocity reconstruction +# ======================= + +U_rec, z_interp, X, dx_1, dx_2 = reconstruct_velocity(u1, u2, probe1, probe2) +U_th = U(z_interp) +# +fig, axarr = plt.subplots(1, 2, layout="constrained", sharey=True) +for ax, u_th, u_rec in zip(axarr, U_th, U_rec): + ax.plot(u_th, z_interp, ".", label="base") + ax.plot(u_rec, z_interp, ".", label="reconstructed") + ax.legend() +axarr[0].set_xlabel("u") +axarr[1].set_xlabel("v") +axarr[0].set_ylabel("z") +plt.show() diff --git a/_downloads/072ebe5500351177edd3cc97b2ba54e0/plot_direct_inversion.py b/_downloads/072ebe5500351177edd3cc97b2ba54e0/plot_direct_inversion.py new file mode 100644 index 0000000..f019e5d --- /dev/null +++ b/_downloads/072ebe5500351177edd3cc97b2ba54e0/plot_direct_inversion.py @@ -0,0 +1,188 @@ +""" +============================================== +Concentration inference from amplitude signals +============================================== +""" + +import matplotlib.pyplot as plt +import numpy as np + +import pyudv.attenuation.direct_models as DM +from pyudv.attenuation.inversion import explicit_inversion +from pyudv.attenuation.sediment_acoustic_models import quartz_sand as quartz + + +def C_to_phi(C, rho=2.65e3): + return C / rho + + +def phi_to_C(phi, rho=2.65e3): + return phi * rho + + +fig_width_small = 11.25 + +# %% +# Define the parameters for the direct model +# ========================================== + +d = 100e-6 # grain mean diameter [m] +rho = 2.65 # grain density [g/cm3] +rho = rho * 1e-3 / 1e-6 # grain density [kg/m3] + +F = 2e6 # frequency [Hz] +T = 20 # Temperature [Celsius degrees] +a_w = DM.alpha_w(F, T) # water absorption, [m-1] +k = 2 * np.pi * F / DM.sound_velocity(T) # wavenumber of the wave + +Ks, Kt = 1, 1 # sediment and transducer constants +Xi = quartz.Xi(k, d / 2) # sediment attenuation constant +rn = 0.05 # near field distance [cm] +r = np.linspace(0.001, 12, 330) # radial coordinates [cm] + +# Volumic fraction of grain +Phi = np.array([0.0001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1]) + + +# %% +# Influence of the imposed point in the integration +# ================================================= +# +# without near field function +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +psi = DM.near_field_theoretical(r, rn) * 0 + 1 # near field function +# defining a constant grain concentration profile +C = Phi[:, None] * rho * (r[None, :] * 0 + 1) +MSV = DM.create_MSvoltage(C, r, Xi, a_w, Ks, Kt, psi) +# +indexes = [2, 50, 150, 250, 320] + +color = [] +fig, ax = plt.subplots( + 1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True +) +for i, phi in enumerate(Phi): + if i == 0: + a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label="imposed") + else: + a = plt.plot(C[i, :], r, lw=4, alpha=0.3) + color.append(a[0].get_color()) +for j, index in enumerate(indexes): + C0 = C[:, index] + r0 = r[index] + C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi, C0, r0) + for i, phi in enumerate(Phi): + if i == 0: + plt.plot( + C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i] + ) + else: + plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i]) + ax.scatter(C0[i], r0, color=color[i]), +plt.xlabel("Concentration~[kg/m3]") +plt.ylabel("Distance from transducer~[m]") +ax.set_xscale("log") +plt.xlim([0.5 * C.min(), 2.5 * C.max()]) +plt.ylim([0, r.max()]) +ax.invert_yaxis() +secax = ax.secondary_xaxis("top", functions=(C_to_phi, phi_to_C)) +secax.set_xlabel("Volumic fraction") +plt.legend(title="Distance of imposed concentration [mm]") +plt.title("Without near field") + +plt.show() + +# %% +# with near field function +# ^^^^^^^^^^^^^^^^^^^^^^^^ + +psi = DM.near_field_theoretical(r, rn) # near field function +# defining a constant grain concentration profile +C = Phi[:, None] * rho * (r[None, :] * 0 + 1) +MSV = DM.create_MSvoltage(C, r[None, :], Xi, a_w, Ks, Kt, psi[None, :]) +# +color = [] +fig, ax = plt.subplots( + 1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True +) +for i, phi in enumerate(Phi): + if i == 0: + a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label="imposed") + else: + a = plt.plot(C[i, :], r, lw=4, alpha=0.3) + color.append(a[0].get_color()) +for j, index in enumerate(indexes): + C0 = C[:, index] + r0 = r[index] + C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi * 0 + 1, C0, r0) + for i, phi in enumerate(Phi): + if i == 0: + plt.plot( + C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i] + ) + else: + plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i]) +plt.xlabel("Concentration~[kg/m3]") +plt.ylabel("Distance from transducer~[m]") +ax.set_xscale("log") +plt.xlim([0.5 * C.min(), 2.5 * C.max()]) +plt.ylim([0, r.max()]) +ax.invert_yaxis() +secax = ax.secondary_xaxis("top", functions=(C_to_phi, phi_to_C)) +secax.set_xlabel("Volumic fraction") +plt.legend(title="Distance of imposed concentration [mm]") +plt.title("With near field") + +plt.show() + +# %% +# with real type concentration profiles +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +psi = DM.near_field_theoretical(r, rn) # near field function +# C = ( +# Phi[:, None] * rho * np.exp(-r[None, :] / 1) +# ) # defining an exponentially decreasing profile +C = ( + Phi[:, None] * rho * np.exp(r[None, :] / 10) +) # defining an exponentially increasing profile +# C = Phi[:, None] * rho * (r[None, :] * 0 + 1) # defining sedimentation-like profile +# C[..., :230] = 0 +# +MSV = DM.create_MSvoltage(C, r[None, :], Xi, a_w, Ks, Kt, psi[None, :]) +# +color = [] +fig, ax = plt.subplots( + 1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True +) +for i, phi in enumerate(Phi): + if i == 0: + a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label="imposed") + else: + a = plt.plot(C[i, :], r, lw=4, alpha=0.3) + color.append(a[0].get_color()) +for j, index in enumerate(indexes): + C0 = C[:, index] + r0 = r[index] + C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi * 0 + 1, C0, r0) + for i, phi in enumerate(Phi): + if i == 0: + plt.plot( + C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i] + ) + else: + plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i]) + # +plt.xlabel("Concentration~[kg/m3]") +plt.ylabel("Distance from transducer~[m]") +ax.set_xscale("log") +plt.xlim([0.2 * C[:, -1].min(), 2.5 * C.max()]) +plt.ylim([0, r.max()]) +ax.invert_yaxis() +secax = ax.secondary_xaxis("top", functions=(C_to_phi, phi_to_C)) +secax.set_xlabel("Volumic fraction") +plt.legend(title="Distance of imposed concentration [mm]") +plt.title("With exponential concentration profiles") + +plt.show() diff --git a/_downloads/25862d8e3051524fbbbd734856835c1b/plot_sketch_multiple_probes.ipynb b/_downloads/25862d8e3051524fbbbd734856835c1b/plot_sketch_multiple_probes.ipynb new file mode 100644 index 0000000..573aeac --- /dev/null +++ b/_downloads/25862d8e3051524fbbbd734856835c1b/plot_sketch_multiple_probes.ipynb @@ -0,0 +1,43 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Sketch multiple probes\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\nimport numpy as np\n\nfrom pyudv.geometry import Probe, sketch_probes\n\n# ## define probes\nr = np.linspace(1, 5, 100) # beam radial coordiantes, same for all probes\nalpha1, alpha2, alpha3, alpha4 = -120, -70, 70, -80 # probe inclinations in degree\n# probe origin points\nO1, O2, O3, O4 = (\n np.array([1, 8]),\n np.array([-1, 7]),\n np.array([2, 2]),\n np.array([3, 8.5]),\n)\n# probe parameters\nPROBE_PARS = [\n [r, alpha1, [0, O1]], # probe1\n [r, alpha2, [0, O2]], # probe2\n [r, alpha3, [0, O3]], # probe3\n [r, alpha4, [0, O4]], # probe4\n]\n#\nprobes = [Probe(*probe_pars) for probe_pars in PROBE_PARS]\nprobe_colors = [\"tab:blue\", \"tab:green\", \"tab:orange\", \"tab:red\"]\ncombinations = [(0, 1), (2, 3)]\ncombination_colors = [\"k\", \"grey\"]\n\nfig, ax = plt.subplots(1, 1, layout=\"constrained\")\nsketch_probes(\n probes,\n combinations=combinations,\n probe_colors=probe_colors,\n combination_colors=combination_colors,\n ax=ax,\n)\n\n# adding another probe afterwards\nprobe_add = Probe(r, 70, [0, np.array([4, 2])])\nprobe_add.plot_probe(ax, color=\"tab:pink\")\n\nax.set_xlabel(\"x\")\nax.set_ylabel(\"y\")\nplt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/324c76d72de4ccd8db63a09d4b2f0f27/_examples_python.zip b/_downloads/324c76d72de4ccd8db63a09d4b2f0f27/_examples_python.zip new file mode 100644 index 0000000000000000000000000000000000000000..536963e960ed1da1ab82359d33ab229eac1b540e GIT binary patch literal 11149 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 literal 0 HcmV?d00001 diff --git a/_downloads/61df9645d1ec2c2cc529aac03fc0e3bd/plot_sketch_multiple_probes.py b/_downloads/61df9645d1ec2c2cc529aac03fc0e3bd/plot_sketch_multiple_probes.py new file mode 100644 index 0000000..a128a0e --- /dev/null +++ b/_downloads/61df9645d1ec2c2cc529aac03fc0e3bd/plot_sketch_multiple_probes.py @@ -0,0 +1,50 @@ +""" +====================== +Sketch multiple probes +====================== +""" + +import matplotlib.pyplot as plt +import numpy as np + +from pyudv.geometry import Probe, sketch_probes + +# ## define probes +r = np.linspace(1, 5, 100) # beam radial coordiantes, same for all probes +alpha1, alpha2, alpha3, alpha4 = -120, -70, 70, -80 # probe inclinations in degree +# probe origin points +O1, O2, O3, O4 = ( + np.array([1, 8]), + np.array([-1, 7]), + np.array([2, 2]), + np.array([3, 8.5]), +) +# probe parameters +PROBE_PARS = [ + [r, alpha1, [0, O1]], # probe1 + [r, alpha2, [0, O2]], # probe2 + [r, alpha3, [0, O3]], # probe3 + [r, alpha4, [0, O4]], # probe4 +] +# +probes = [Probe(*probe_pars) for probe_pars in PROBE_PARS] +probe_colors = ["tab:blue", "tab:green", "tab:orange", "tab:red"] +combinations = [(0, 1), (2, 3)] +combination_colors = ["k", "grey"] + +fig, ax = plt.subplots(1, 1, layout="constrained") +sketch_probes( + probes, + combinations=combinations, + probe_colors=probe_colors, + combination_colors=combination_colors, + ax=ax, +) + +# adding another probe afterwards +probe_add = Probe(r, 70, [0, np.array([4, 2])]) +probe_add.plot_probe(ax, color="tab:pink") + +ax.set_xlabel("x") +ax.set_ylabel("y") +plt.show() diff --git a/_downloads/6cec4194ce032359195b02a8876d221c/plot_direct_inversion.ipynb b/_downloads/6cec4194ce032359195b02a8876d221c/plot_direct_inversion.ipynb new file mode 100644 index 0000000..22d49a0 --- /dev/null +++ b/_downloads/6cec4194ce032359195b02a8876d221c/plot_direct_inversion.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Concentration inference from amplitude signals\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\nimport numpy as np\n\nimport pyudv.attenuation.direct_models as DM\nfrom pyudv.attenuation.inversion import explicit_inversion\nfrom pyudv.attenuation.sediment_acoustic_models import quartz_sand as quartz\n\n\ndef C_to_phi(C, rho=2.65e3):\n return C / rho\n\n\ndef phi_to_C(phi, rho=2.65e3):\n return phi * rho\n\n\nfig_width_small = 11.25" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define the parameters for the direct model\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "d = 100e-6 # grain mean diameter [m]\nrho = 2.65 # grain density [g/cm3]\nrho = rho * 1e-3 / 1e-6 # grain density [kg/m3]\n\nF = 2e6 # frequency [Hz]\nT = 20 # Temperature [Celsius degrees]\na_w = DM.alpha_w(F, T) # water absorption, [m-1]\nk = 2 * np.pi * F / DM.sound_velocity(T) # wavenumber of the wave\n\nKs, Kt = 1, 1 # sediment and transducer constants\nXi = quartz.Xi(k, d / 2) # sediment attenuation constant\nrn = 0.05 # near field distance [cm]\nr = np.linspace(0.001, 12, 330) # radial coordinates [cm]\n\n# Volumic fraction of grain\nPhi = np.array([0.0001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Influence of the imposed point in the integration\n\n### without near field function\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "psi = DM.near_field_theoretical(r, rn) * 0 + 1 # near field function\n# defining a constant grain concentration profile\nC = Phi[:, None] * rho * (r[None, :] * 0 + 1)\nMSV = DM.create_MSvoltage(C, r, Xi, a_w, Ks, Kt, psi)\n#\nindexes = [2, 50, 150, 250, 320]\n\ncolor = []\nfig, ax = plt.subplots(\n 1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True\n)\nfor i, phi in enumerate(Phi):\n if i == 0:\n a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label=\"imposed\")\n else:\n a = plt.plot(C[i, :], r, lw=4, alpha=0.3)\n color.append(a[0].get_color())\nfor j, index in enumerate(indexes):\n C0 = C[:, index]\n r0 = r[index]\n C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi, C0, r0)\n for i, phi in enumerate(Phi):\n if i == 0:\n plt.plot(\n C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i]\n )\n else:\n plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i])\n ax.scatter(C0[i], r0, color=color[i]),\nplt.xlabel(\"Concentration~[kg/m3]\")\nplt.ylabel(\"Distance from transducer~[m]\")\nax.set_xscale(\"log\")\nplt.xlim([0.5 * C.min(), 2.5 * C.max()])\nplt.ylim([0, r.max()])\nax.invert_yaxis()\nsecax = ax.secondary_xaxis(\"top\", functions=(C_to_phi, phi_to_C))\nsecax.set_xlabel(\"Volumic fraction\")\nplt.legend(title=\"Distance of imposed concentration [mm]\")\nplt.title(\"Without near field\")\n\nplt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### with near field function\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "psi = DM.near_field_theoretical(r, rn) # near field function\n# defining a constant grain concentration profile\nC = Phi[:, None] * rho * (r[None, :] * 0 + 1)\nMSV = DM.create_MSvoltage(C, r[None, :], Xi, a_w, Ks, Kt, psi[None, :])\n#\ncolor = []\nfig, ax = plt.subplots(\n 1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True\n)\nfor i, phi in enumerate(Phi):\n if i == 0:\n a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label=\"imposed\")\n else:\n a = plt.plot(C[i, :], r, lw=4, alpha=0.3)\n color.append(a[0].get_color())\nfor j, index in enumerate(indexes):\n C0 = C[:, index]\n r0 = r[index]\n C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi * 0 + 1, C0, r0)\n for i, phi in enumerate(Phi):\n if i == 0:\n plt.plot(\n C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i]\n )\n else:\n plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i])\nplt.xlabel(\"Concentration~[kg/m3]\")\nplt.ylabel(\"Distance from transducer~[m]\")\nax.set_xscale(\"log\")\nplt.xlim([0.5 * C.min(), 2.5 * C.max()])\nplt.ylim([0, r.max()])\nax.invert_yaxis()\nsecax = ax.secondary_xaxis(\"top\", functions=(C_to_phi, phi_to_C))\nsecax.set_xlabel(\"Volumic fraction\")\nplt.legend(title=\"Distance of imposed concentration [mm]\")\nplt.title(\"With near field\")\n\nplt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### with real type concentration profiles\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "psi = DM.near_field_theoretical(r, rn) # near field function\n# C = (\n# Phi[:, None] * rho * np.exp(-r[None, :] / 1)\n# ) # defining an exponentially decreasing profile\nC = (\n Phi[:, None] * rho * np.exp(r[None, :] / 10)\n) # defining an exponentially increasing profile\n# C = Phi[:, None] * rho * (r[None, :] * 0 + 1) # defining sedimentation-like profile\n# C[..., :230] = 0\n#\nMSV = DM.create_MSvoltage(C, r[None, :], Xi, a_w, Ks, Kt, psi[None, :])\n#\ncolor = []\nfig, ax = plt.subplots(\n 1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True\n)\nfor i, phi in enumerate(Phi):\n if i == 0:\n a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label=\"imposed\")\n else:\n a = plt.plot(C[i, :], r, lw=4, alpha=0.3)\n color.append(a[0].get_color())\nfor j, index in enumerate(indexes):\n C0 = C[:, index]\n r0 = r[index]\n C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi * 0 + 1, C0, r0)\n for i, phi in enumerate(Phi):\n if i == 0:\n plt.plot(\n C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i]\n )\n else:\n plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i])\n #\nplt.xlabel(\"Concentration~[kg/m3]\")\nplt.ylabel(\"Distance from transducer~[m]\")\nax.set_xscale(\"log\")\nplt.xlim([0.2 * C[:, -1].min(), 2.5 * C.max()])\nplt.ylim([0, r.max()])\nax.invert_yaxis()\nsecax = ax.secondary_xaxis(\"top\", functions=(C_to_phi, phi_to_C))\nsecax.set_xlabel(\"Volumic fraction\")\nplt.legend(title=\"Distance of imposed concentration [mm]\")\nplt.title(\"With exponential concentration profiles\")\n\nplt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/a5c9e21f789d517bf8b16d2d54419403/plot_read_plot_mfprof_data.ipynb b/_downloads/a5c9e21f789d517bf8b16d2d54419403/plot_read_plot_mfprof_data.ipynb new file mode 100644 index 0000000..8c883a5 --- /dev/null +++ b/_downloads/a5c9e21f789d517bf8b16d2d54419403/plot_read_plot_mfprof_data.ipynb @@ -0,0 +1,43 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Read and plot .mfprof data\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.colors as colors\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nfrom pyudv.read_mfprof import (\n amplitude_from_mfprof_reading,\n read_mfprof,\n velocity_from_mfprof_reading,\n)\n\n#\npath_data = \"src/data_sample.mfprof\"\n\n# #### Loading data\nData, Parameters, Info, Units = read_mfprof(path_data)\nAmplitude_data = amplitude_from_mfprof_reading(Data, Parameters)\nVelocity_data = velocity_from_mfprof_reading(Data, Parameters)\ntime = Data[\"profileTime\"]\nz_coordinates = Data[\"DistanceAlongBeam\"] * 1e2\nindmax_time = np.argwhere(Data[\"transducer\"] == 0)[1][0] - 1\nindmax_z = -1\nind_bottom = 572\n\n# #### plotting velocity\ndivnorm = colors.TwoSlopeNorm(vcenter=0, vmin=-0.2, vmax=0.2)\nfig, ax = plt.subplots(1, 1, constrained_layout=True)\nc = ax.pcolormesh(\n time[:indmax_time],\n z_coordinates[:indmax_z],\n Velocity_data[:indmax_z, :indmax_time],\n cmap=\"PuOr\",\n norm=divnorm,\n rasterized=True,\n shading=\"auto\",\n)\nax.axhline(y=z_coordinates[ind_bottom], color=\"k\", lw=\"0.5\", ls=\"--\")\nax.invert_yaxis()\nfig.colorbar(c, label=\"Velocity [m/s]\")\nax.set_xlabel(\"Time [s]\")\nax.set_ylabel(\"DistanceAlongBeam [cm]\")\n# fig.draw_without_rendering()\nplt.savefig(\"plots/Spatio_temporal_velocity.pdf\", dpi=600)\nplt.show()\n\n# #### plotting amplitude\ndivnorm = colors.TwoSlopeNorm(vcenter=0, vmin=-0.1, vmax=0.1)\nfig, ax = plt.subplots(1, 1, constrained_layout=True)\nc = ax.pcolormesh(\n time[:indmax_time],\n z_coordinates[:indmax_z],\n Amplitude_data[:indmax_z, :indmax_time],\n rasterized=True,\n shading=\"auto\",\n cmap=\"PuOr\",\n norm=divnorm,\n)\nax.axhline(y=z_coordinates[ind_bottom], color=\"k\", lw=\"0.5\", ls=\"--\")\nax.invert_yaxis()\nfig.colorbar(c, label=\"Amplitude [V]\")\nax.set_xlabel(\"Time [s]\")\nax.set_ylabel(\"DistanceAlongBeam [cm]\")\nplt.savefig(\"plots/Spatio_temporal_amplitude.pdf\", dpi=600)\nplt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/cd287cdd444dc329dfbb4e599fcea920/plot_reconstruct_velocity.ipynb b/_downloads/cd287cdd444dc329dfbb4e599fcea920/plot_reconstruct_velocity.ipynb new file mode 100644 index 0000000..7bae7be --- /dev/null +++ b/_downloads/cd287cdd444dc329dfbb4e599fcea920/plot_reconstruct_velocity.ipynb @@ -0,0 +1,97 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Probes and velocity reconstruction\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\nimport numpy as np\n\nfrom pyudv.geometry import Probe, sketch_probes, reconstruct_velocity\n\n\ndef U(z):\n u = 5 * (5 - z) ** 2\n v = u / 10\n U = np.array([u, v])\n return U" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Define probes and plot them\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# define probes\nr = np.linspace(0, 5, 100)\nalpha1, alpha2 = -120, -70 # deg\nO1, O2 = np.array([1, 8]), np.array([-1, 7])\nprobe1_pars = [r, alpha1, [0, O1]]\nprobe2_pars = [r, alpha2, [0, O2]]\n#\nprobe1 = Probe(*probe1_pars)\nprobe2 = Probe(*probe2_pars)\n\nfig, ax = plt.subplots(1, 1, layout=\"constrained\")\nsketch_probes(\n [probe1, probe2],\n combinations=[[0, 1]],\n combination_colors=[\"k\"],\n ax=ax,\n)\nax.set_xlabel(\"x\")\nax.set_ylabel(\"y\")\nplt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create fake signal\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "u1 = U(probe1.z).T @ probe1.unit_vec\nu2 = U(probe2.z).T @ probe2.unit_vec" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Velocity reconstruction\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "U_rec, z_interp, X, dx_1, dx_2 = reconstruct_velocity(u1, u2, probe1, probe2)\nU_th = U(z_interp)\n#\nfig, axarr = plt.subplots(1, 2, layout=\"constrained\", sharey=True)\nfor ax, u_th, u_rec in zip(axarr, U_th, U_rec):\n ax.plot(u_th, z_interp, \".\", label=\"base\")\n ax.plot(u_rec, z_interp, \".\", label=\"reconstructed\")\n ax.legend()\naxarr[0].set_xlabel(\"u\")\naxarr[1].set_xlabel(\"v\")\naxarr[0].set_ylabel(\"z\")\nplt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_examples/index.html b/_examples/index.html new file mode 100644 index 0000000..1ae98b6 --- /dev/null +++ b/_examples/index.html @@ -0,0 +1,468 @@ + + + + + + + + + + + Examples — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +
+

Examples#

+

Below is a gallery of examples demonstrating the use of several functions of pyudv.

+
+

Sketch multiple probes

+
Sketch multiple probes
+
+

Probes and velocity reconstruction

+
Probes and velocity reconstruction
+
+

Read and plot .mfprof data

+
Read and plot .mfprof data
+
+

Concentration inference from amplitude signals

+
Concentration inference from amplitude signals
+
+
+ +

Gallery generated by Sphinx-Gallery

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_examples/plot_direct_inversion.html b/_examples/plot_direct_inversion.html new file mode 100644 index 0000000..3a8a3e5 --- /dev/null +++ b/_examples/plot_direct_inversion.html @@ -0,0 +1,669 @@ + + + + + + + + + + + Concentration inference from amplitude signals — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ + +
+

Concentration inference from amplitude signals#

+
import matplotlib.pyplot as plt
+import numpy as np
+
+import pyudv.attenuation.direct_models as DM
+from pyudv.attenuation.inversion import explicit_inversion
+from pyudv.attenuation.sediment_acoustic_models import quartz_sand as quartz
+
+
+def C_to_phi(C, rho=2.65e3):
+    return C / rho
+
+
+def phi_to_C(phi, rho=2.65e3):
+    return phi * rho
+
+
+fig_width_small = 11.25
+
+
+
+

Define the parameters for the direct model#

+
d = 100e-6  # grain mean diameter [m]
+rho = 2.65  # grain density [g/cm3]
+rho = rho * 1e-3 / 1e-6  # grain density [kg/m3]
+
+F = 2e6  # frequency [Hz]
+T = 20  # Temperature [Celsius degrees]
+a_w = DM.alpha_w(F, T)  # water absorption, [m-1]
+k = 2 * np.pi * F / DM.sound_velocity(T)  # wavenumber of the wave
+
+Ks, Kt = 1, 1  # sediment and transducer constants
+Xi = quartz.Xi(k, d / 2)  # sediment attenuation constant
+rn = 0.05  # near field distance [cm]
+r = np.linspace(0.001, 12, 330)  # radial coordinates [cm]
+
+# Volumic fraction of grain
+Phi = np.array([0.0001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1])
+
+
+
+
+

Influence of the imposed point in the integration#

+
+

without near field function#

+
psi = DM.near_field_theoretical(r, rn) * 0 + 1  # near field function
+# defining a constant grain concentration profile
+C = Phi[:, None] * rho * (r[None, :] * 0 + 1)
+MSV = DM.create_MSvoltage(C, r, Xi, a_w, Ks, Kt, psi)
+#
+indexes = [2, 50, 150, 250, 320]
+
+color = []
+fig, ax = plt.subplots(
+    1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True
+)
+for i, phi in enumerate(Phi):
+    if i == 0:
+        a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label="imposed")
+    else:
+        a = plt.plot(C[i, :], r, lw=4, alpha=0.3)
+    color.append(a[0].get_color())
+for j, index in enumerate(indexes):
+    C0 = C[:, index]
+    r0 = r[index]
+    C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi, C0, r0)
+    for i, phi in enumerate(Phi):
+        if i == 0:
+            plt.plot(
+                C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i]
+            )
+        else:
+            plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i])
+        ax.scatter(C0[i], r0, color=color[i]),
+plt.xlabel("Concentration~[kg/m3]")
+plt.ylabel("Distance from transducer~[m]")
+ax.set_xscale("log")
+plt.xlim([0.5 * C.min(), 2.5 * C.max()])
+plt.ylim([0, r.max()])
+ax.invert_yaxis()
+secax = ax.secondary_xaxis("top", functions=(C_to_phi, phi_to_C))
+secax.set_xlabel("Volumic fraction")
+plt.legend(title="Distance of imposed concentration [mm]")
+plt.title("Without near field")
+
+plt.show()
+
+
+Without near field
+
+

with near field function#

+
psi = DM.near_field_theoretical(r, rn)  # near field function
+# defining a constant grain concentration profile
+C = Phi[:, None] * rho * (r[None, :] * 0 + 1)
+MSV = DM.create_MSvoltage(C, r[None, :], Xi, a_w, Ks, Kt, psi[None, :])
+#
+color = []
+fig, ax = plt.subplots(
+    1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True
+)
+for i, phi in enumerate(Phi):
+    if i == 0:
+        a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label="imposed")
+    else:
+        a = plt.plot(C[i, :], r, lw=4, alpha=0.3)
+    color.append(a[0].get_color())
+for j, index in enumerate(indexes):
+    C0 = C[:, index]
+    r0 = r[index]
+    C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi * 0 + 1, C0, r0)
+    for i, phi in enumerate(Phi):
+        if i == 0:
+            plt.plot(
+                C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i]
+            )
+        else:
+            plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i])
+plt.xlabel("Concentration~[kg/m3]")
+plt.ylabel("Distance from transducer~[m]")
+ax.set_xscale("log")
+plt.xlim([0.5 * C.min(), 2.5 * C.max()])
+plt.ylim([0, r.max()])
+ax.invert_yaxis()
+secax = ax.secondary_xaxis("top", functions=(C_to_phi, phi_to_C))
+secax.set_xlabel("Volumic fraction")
+plt.legend(title="Distance of imposed concentration [mm]")
+plt.title("With near field")
+
+plt.show()
+
+
+With near field
+
+

with real type concentration profiles#

+
psi = DM.near_field_theoretical(r, rn)  # near field function
+# C = (
+#     Phi[:, None] * rho * np.exp(-r[None, :] / 1)
+# )  # defining an exponentially decreasing profile
+C = (
+    Phi[:, None] * rho * np.exp(r[None, :] / 10)
+)  # defining an exponentially increasing profile
+# C = Phi[:, None] * rho * (r[None, :] * 0 + 1)  # defining sedimentation-like profile
+# C[..., :230] = 0
+#
+MSV = DM.create_MSvoltage(C, r[None, :], Xi, a_w, Ks, Kt, psi[None, :])
+#
+color = []
+fig, ax = plt.subplots(
+    1, 1, figsize=(fig_width_small, fig_width_small), constrained_layout=True
+)
+for i, phi in enumerate(Phi):
+    if i == 0:
+        a = plt.plot(C[i, :], r, lw=4, alpha=0.3, label="imposed")
+    else:
+        a = plt.plot(C[i, :], r, lw=4, alpha=0.3)
+    color.append(a[0].get_color())
+for j, index in enumerate(indexes):
+    C0 = C[:, index]
+    r0 = r[index]
+    C_inferred, *_ = explicit_inversion(MSV, r, Xi, a_w, psi * 0 + 1, C0, r0)
+    for i, phi in enumerate(Phi):
+        if i == 0:
+            plt.plot(
+                C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, label=str(r0), color=color[i]
+            )
+        else:
+            plt.plot(C_inferred[i, :], r, lw=2.5 - (j + 1) / 3, color=color[i])
+        #
+plt.xlabel("Concentration~[kg/m3]")
+plt.ylabel("Distance from transducer~[m]")
+ax.set_xscale("log")
+plt.xlim([0.2 * C[:, -1].min(), 2.5 * C.max()])
+plt.ylim([0, r.max()])
+ax.invert_yaxis()
+secax = ax.secondary_xaxis("top", functions=(C_to_phi, phi_to_C))
+secax.set_xlabel("Volumic fraction")
+plt.legend(title="Distance of imposed concentration [mm]")
+plt.title("With exponential concentration profiles")
+
+plt.show()
+
+
+With exponential concentration profiles

Total running time of the script: (0 minutes 3.286 seconds)

+ +

Gallery generated by Sphinx-Gallery

+
+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_examples/plot_read_plot_mfprof_data.html b/_examples/plot_read_plot_mfprof_data.html new file mode 100644 index 0000000..63f6ccc --- /dev/null +++ b/_examples/plot_read_plot_mfprof_data.html @@ -0,0 +1,531 @@ + + + + + + + + + + + Read and plot .mfprof data — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ + +
+

Read and plot .mfprof data#

+
    +
  • plot read plot mfprof data
  • +
  • plot read plot mfprof data
  • +
+
import matplotlib.colors as colors
+import matplotlib.pyplot as plt
+import numpy as np
+
+from pyudv.read_mfprof import (
+    amplitude_from_mfprof_reading,
+    read_mfprof,
+    velocity_from_mfprof_reading,
+)
+
+#
+path_data = "src/data_sample.mfprof"
+
+# #### Loading data
+Data, Parameters, Info, Units = read_mfprof(path_data)
+Amplitude_data = amplitude_from_mfprof_reading(Data, Parameters)
+Velocity_data = velocity_from_mfprof_reading(Data, Parameters)
+time = Data["profileTime"]
+z_coordinates = Data["DistanceAlongBeam"] * 1e2
+indmax_time = np.argwhere(Data["transducer"] == 0)[1][0] - 1
+indmax_z = -1
+ind_bottom = 572
+
+# #### plotting velocity
+divnorm = colors.TwoSlopeNorm(vcenter=0, vmin=-0.2, vmax=0.2)
+fig, ax = plt.subplots(1, 1, constrained_layout=True)
+c = ax.pcolormesh(
+    time[:indmax_time],
+    z_coordinates[:indmax_z],
+    Velocity_data[:indmax_z, :indmax_time],
+    cmap="PuOr",
+    norm=divnorm,
+    rasterized=True,
+    shading="auto",
+)
+ax.axhline(y=z_coordinates[ind_bottom], color="k", lw="0.5", ls="--")
+ax.invert_yaxis()
+fig.colorbar(c, label="Velocity [m/s]")
+ax.set_xlabel("Time [s]")
+ax.set_ylabel("DistanceAlongBeam [cm]")
+# fig.draw_without_rendering()
+plt.savefig("plots/Spatio_temporal_velocity.pdf", dpi=600)
+plt.show()
+
+# #### plotting amplitude
+divnorm = colors.TwoSlopeNorm(vcenter=0, vmin=-0.1, vmax=0.1)
+fig, ax = plt.subplots(1, 1, constrained_layout=True)
+c = ax.pcolormesh(
+    time[:indmax_time],
+    z_coordinates[:indmax_z],
+    Amplitude_data[:indmax_z, :indmax_time],
+    rasterized=True,
+    shading="auto",
+    cmap="PuOr",
+    norm=divnorm,
+)
+ax.axhline(y=z_coordinates[ind_bottom], color="k", lw="0.5", ls="--")
+ax.invert_yaxis()
+fig.colorbar(c, label="Amplitude [V]")
+ax.set_xlabel("Time [s]")
+ax.set_ylabel("DistanceAlongBeam [cm]")
+plt.savefig("plots/Spatio_temporal_amplitude.pdf", dpi=600)
+plt.show()
+
+
+

Total running time of the script: (0 minutes 4.333 seconds)

+ +

Gallery generated by Sphinx-Gallery

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_examples/plot_reconstruct_velocity.html b/_examples/plot_reconstruct_velocity.html new file mode 100644 index 0000000..327aa9d --- /dev/null +++ b/_examples/plot_reconstruct_velocity.html @@ -0,0 +1,544 @@ + + + + + + + + + + + Probes and velocity reconstruction — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ + +
+

Probes and velocity reconstruction#

+
import matplotlib.pyplot as plt
+import numpy as np
+
+from pyudv.geometry import Probe, sketch_probes, reconstruct_velocity
+
+
+def U(z):
+    u = 5 * (5 - z) ** 2
+    v = u / 10
+    U = np.array([u, v])
+    return U
+
+
+
+

Define probes and plot them#

+
# define probes
+r = np.linspace(0, 5, 100)
+alpha1, alpha2 = -120, -70  # deg
+O1, O2 = np.array([1, 8]), np.array([-1, 7])
+probe1_pars = [r, alpha1, [0, O1]]
+probe2_pars = [r, alpha2, [0, O2]]
+#
+probe1 = Probe(*probe1_pars)
+probe2 = Probe(*probe2_pars)
+
+fig, ax = plt.subplots(1, 1, layout="constrained")
+sketch_probes(
+    [probe1, probe2],
+    combinations=[[0, 1]],
+    combination_colors=["k"],
+    ax=ax,
+)
+ax.set_xlabel("x")
+ax.set_ylabel("y")
+plt.show()
+
+
+plot reconstruct velocity
+
+

Create fake signal#

+ +
+
+

Velocity reconstruction#

+
U_rec, z_interp, X, dx_1, dx_2 = reconstruct_velocity(u1, u2, probe1, probe2)
+U_th = U(z_interp)
+#
+fig, axarr = plt.subplots(1, 2, layout="constrained", sharey=True)
+for ax, u_th, u_rec in zip(axarr, U_th, U_rec):
+    ax.plot(u_th, z_interp, ".", label="base")
+    ax.plot(u_rec, z_interp, ".", label="reconstructed")
+    ax.legend()
+axarr[0].set_xlabel("u")
+axarr[1].set_xlabel("v")
+axarr[0].set_ylabel("z")
+plt.show()
+
+
+plot reconstruct velocity

Total running time of the script: (0 minutes 0.294 seconds)

+ +

Gallery generated by Sphinx-Gallery

+
+
+ + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_examples/plot_sketch_multiple_probes.html b/_examples/plot_sketch_multiple_probes.html new file mode 100644 index 0000000..758a5b5 --- /dev/null +++ b/_examples/plot_sketch_multiple_probes.html @@ -0,0 +1,508 @@ + + + + + + + + + + + Sketch multiple probes — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ + +
+

Sketch multiple probes#

+plot sketch multiple probes
import matplotlib.pyplot as plt
+import numpy as np
+
+from pyudv.geometry import Probe, sketch_probes
+
+# ## define probes
+r = np.linspace(1, 5, 100)  # beam radial coordiantes, same for all probes
+alpha1, alpha2, alpha3, alpha4 = -120, -70, 70, -80  # probe inclinations in degree
+# probe origin points
+O1, O2, O3, O4 = (
+    np.array([1, 8]),
+    np.array([-1, 7]),
+    np.array([2, 2]),
+    np.array([3, 8.5]),
+)
+# probe parameters
+PROBE_PARS = [
+    [r, alpha1, [0, O1]],  # probe1
+    [r, alpha2, [0, O2]],  # probe2
+    [r, alpha3, [0, O3]],  # probe3
+    [r, alpha4, [0, O4]],  # probe4
+]
+#
+probes = [Probe(*probe_pars) for probe_pars in PROBE_PARS]
+probe_colors = ["tab:blue", "tab:green", "tab:orange", "tab:red"]
+combinations = [(0, 1), (2, 3)]
+combination_colors = ["k", "grey"]
+
+fig, ax = plt.subplots(1, 1, layout="constrained")
+sketch_probes(
+    probes,
+    combinations=combinations,
+    probe_colors=probe_colors,
+    combination_colors=combination_colors,
+    ax=ax,
+)
+
+# adding another probe afterwards
+probe_add = Probe(r, 70, [0, np.array([4, 2])])
+probe_add.plot_probe(ax, color="tab:pink")
+
+ax.set_xlabel("x")
+ax.set_ylabel("y")
+plt.show()
+
+
+

Total running time of the script: (0 minutes 0.191 seconds)

+ +

Gallery generated by Sphinx-Gallery

+
+ + +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_examples/sg_execution_times.html b/_examples/sg_execution_times.html new file mode 100644 index 0000000..593a3be --- /dev/null +++ b/_examples/sg_execution_times.html @@ -0,0 +1,449 @@ + + + + + + + + + + + Computation times — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_images/sphx_glr_plot_direct_inversion_001.png b/_images/sphx_glr_plot_direct_inversion_001.png new file mode 100644 index 0000000000000000000000000000000000000000..a25dbae05dafbe412e3fa9fdcd50f0b6aabef67b GIT binary patch literal 88584 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

7wOrfmgA5$4TaSiK!}W9a3v4e0cR6p3t?4&{or$ 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
iRsofTf2W_!e9M`r`$u^f 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�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 Jbeqnl{{fL2qq_hA literal 0 HcmV?d00001 diff --git a/_images/sphx_glr_plot_direct_inversion_003.png b/_images/sphx_glr_plot_direct_inversion_003.png new file mode 100644 index 0000000000000000000000000000000000000000..2f9da4050f58ce8c0213ae46c01e9f5dc6fc623d GIT binary patch literal 185096 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

{4f?jqPaCb7IlH)!si}ygA9JDzSLlzvF-RWqRN? zVY9=|<6D#?ONeZ=yWc^&nD(>Y4d$u$3%V^NG}+GSBWwP4m)Qz5y>EVNGL*>4beklT z2oMXs@6S;Hr}t`!0&pDkI`r^**SCIEFr5=>}BXmX3*Psw$T>y595s58XWFbZCm$pLpyGMy<8iy{>=fgN?YyZ!Ef%He@ z`>uF7Azf7u_{%&RH@v{meHvp)gUc`)rg$Hk^nd5kjFh`1?1{hUFmYb6Ue| zZmL7_3)7LSRac80leM z$xro8DrDK~ZI$6Bi>iiJm7yW%&Dh&acfspX2|iA^U0yY+nV(T^-U45dUCSk4filBh zGv+;WRJG7lB|4>|x?^MskyfqlS~Po%2qUCpI;oy0*-yfzeS6<}D!xV3i?Svoy`{Og zVyZd5`EuOUzw4)dE%AKWg=neDuhiP%ES?CvlVyz-<7+@4gz{um7@mE{HMsb4a;`&7TG35C7|jgpyp-rM@fPK$etVShL?S}~Sh?lj zVdYg7Myw~lpRw_BJzxk54c8BP+W&~Qv+2X^!DN_F6ipS$L^=zs;B03sd(BzNKPDsD zUZz<2?5tBHdpAa*R;>F*0LAAqB7kc9JG3@+u0Z=CB2KM8fdt&phF=6zQ<+$L`#w#g z_E#L&l$%D9r`nwkp7&{?D54u-%EAOD`KTXv4xOkQfD%(e`rm@`#&pufbbpH^e644G z0KHcm2Ai(~Ri@b7`uhB=Z@H(R)zC>KSvO|B9dWgRA|1pf7RhJA8#(1K^AnQ}%PyFA zJiAfEFW)^*4!8%20@^~T`J#v7pDS>OL{_9U*dAuTUnZm`TWtc3j1KQTODH%-@+2sv zTprXjHxcsDzVYLw?NgIH8QZM~Nt~`lCg{1{Rhh_%nLsS4BqTr<>=&3im(W*w5tYjn zDr%bx_=pI@zonlDFBbo^RvKb(ic}M8H0>?qop4O;(psWXEA~qGl|zn8Z8x<~4ZA`~ zCN$~SdLzP|ewn>xjE`gf=G1=P&tDUU0tZXZNGH!11Am&zvmnoh{6e&>p7z@q?QcRl z>Yh+4N9Q9k-!X(rJbIs{PIW29r|r`cf4}T(@QgcXWDlqI`VJq$kGrQkW@tf-u={V< z)|6&TZ0;ZdhSB>RcH2Acs<&kO2Qb`F(4T9r4ovle|11NZTSvI*G&K8*a(>2-im4j4 z0kvSTflId+1r>X%x^Q8ZImK}ozUXFRlXtR=RROOG#{MDIUdZx?+_i0>=tN2`@pY~><;->Y7xE>phnjcT{*q}8f-w`Uk8uc4ZR%fWQCIkm`0+t)@glV%t2)D@0$qeMG+@R>tC0Yt;FSFPrWNk5*V2za z<=K896z5#=5cM@Z=)r6lb;OqzQGHLYl=MYa{aS~PQ$z<}tRG>E5r1iZpx93f-i&w7 zO{u@)*W)$)<3?Jp4>M+6*mH-kv3{gq3vU{G91O4=(p}zyCUGVfNJx+w0ybxc zR)OJw+G8Z22h|2k^quTUCaebsDHZ;!?G@`M{UNk+z6F0*QX2otW)7dkJ^E`py0FR*Tax7vslm5+ zaC2AeENJm$$^T=N{T&6V&+Oovng$K!a%70(JtqO40i7T=9U2~e$w{J8-MOjBFBMZn zZRM;l=Y6NvW3~AF~7hkK1+0PwH!7o%1Yr78@3`9StI_@{N6=9X)Q-vU} z-KXKfpV;$z%vln!VR{0$SQsj&?d4AJ`?(~}`+E=a`g3?}1yh*lMPU6=lu>Lgv;QkM zb-{V6V)Gj$i)S)AX;;{^op{Ha?Oqa%s`@ zZ@X;eu*biZjaR%?1?ic>z4G(ZOQeP?Sj+OjBc0O$dZUrP6|3}_#B;!TlzB53rWbgEAIf%Rj| zNm`Rp0?QE<2`B^_f0~=jnw}1hL~52X7A%;+qe)RZkqMU&|?Rj?-4V8VqtPHCtR)n zQH9CNgz3e&F(KTa)s9kQ@pYm+>O`l2ozUb-yl@0!;7bEa&oBPoTZl6Q5({0kU zw!7-GS=O~xU;68e0)%|0xb1JPk#=p6JwBc%5WTUDNT8A4tiwA%AbZ%i4V_H3C;mS!GjrVK`h#~iePk!sHF+hIH%R}P)76a^Ir8-6 zQ{J=+#W(AQZ0MwNGR+zN`QuI{>`4vjb*P)FImV_PhxlkPbayhY|UQ#9*$mg z8%_4k3hQi0DyMn3QyAoyrvI(1vpb6&6+$@|oIAq5F0(D}eo;2xRFfJ1m_4v0^tk`C zeivhC;WsraF*^o^0b%AgpG1g>Us~Q1Vz%>|u*e?-gc7Wo03Y6w9WatMg{!PjwZ0sB z2deCycmk7^^vZ&>5sRC63b^0h7UvOE!aWE#UE*xfta$;`?oY(Pr2VC!f1y2+b@qY8 z;~FQHJ?a@B;*6Uy^sM`3A=HGKu2dSpgVkFl8NJ}cX2FFeKd_)CyH*V`rOBa@F#whj zfvYx?II$`qt4BTbpUYj+iVtZA_m@CjME8@Ww!RFW>Qz+8T*evk4**I+OR7`k-Dh}s z{^u=KTO;i~1=b}|wHe36*C*=!^4_lAdz}rtXnZFpqg8Kb<1*z}-L5S-O8!(nBn_yb z;YQ;TSC+&2*SGY?DqNy4P#%L7$6lOUpKbD}X_g&KlyFEv8IsvVm0c^H7Im1SwQ%{? zp3MWSy2iwP+0=|ttza^YRah@ssRn*4f5bnEh1GdjtN_UcgF`BAH*;Rzx!K?G-^(;b zv}LM>i&VYs>sV>ZKTIiS*ht-2+Py#wi#4BTgV*`2MXRIq^7x4J?=x0ookHb&D-OLQ zMUP9dAn?mE?fBi7F+GvNqNB|nd}4__*$K^ zdsYAxa|W>EFx(we!4!=03++coQ~EulEq0bGrYe2F+Qfkvv$W9RbDcWkT!(V#TLCtY z_iJ);F*Z*;SrbaQA!fJN7)r}DjaCpu9!C+P!njH;oPa*||9%&=gsCkK-zgyCf5X%A*8o>J0a$$fEEFy6wR zJtmW%jm~%a%di#;PKxg)`Svmkhfm0j=f1z(dDk1iRFzNa9Z9RiG0~K{-9<}fhUiJk z4?@58wj#FJ(AypQd9kxhGJiQXtr@q|5ZFna0%RNh*jeYydS~2Vmrm59={bS!FUIzz zGn24i<{RQ*FkF_W27GMwkvR~Jh2m-7>sJBy5q?iTCGukbtcD>mOriuRtgmn9J=@=` zm(V^|1>+^V*9K;Hyh+|bwgUSzilh}|~#xK)w* z?mh=#TEc8kdZ^goBk~1nw@Ps7zS0&&ca`Git2g*ywE`{#EBx#y>mkZ7nsSi!ywfR8 z**sn*MX(XO+r<5`A}|^T!XO^naUzx^bX2tSbG{^ql?!FSewXqf9>RJ-aZ$?YKg zFl4!X9fxcX7m`4>j5$a`BYq4&`zG@I4?KLYz0AKK?I)5(>2IVVaEo9nlAL~bs4shR z0;QhGk}rMB%$v6N%msjKk2|$Di~CMOJ|`5efMQhXo5{Y<; zX9wyxo)~{8FtGv+?qyt(xV7yyuF0fPBoJ9((9;}H2PD+;Ekd)F_fYSN)+46p}o7u@7`k{@zk; zj;g25s+J82<5-x&qY6eqN1kG-76>MR3twaMrzg`8smT>n65(=j&dzf)Koa-*Cojx< zq}I0*@^C@ugZt;-giV|WcN|5AK~|E#Z0Z`@h3%3R5!dzMdE)I_9@2J$5TlE@?69zF zvQUHIxqEZRvL0iGWtT{Oi)E>dLIJVZBe^hhAQ9~?gO~;eaU+E>GF#=K=}$6RK;eKS z^iIA1tdd759LA74NdKkWB>{Z->;>{1R|$rpOTc8QIBDowQQzHyY5m&9RnsH|b-M2lT5$yK{xfSk)No^tvun4$z6Zao zYTNA*#ZSJ1{K{%}%66ubBkzk-reEp5ttFuIR#MICMAu;I9zBhN4M*jZaxD>K!W6y9 zHfMbveLvCn3Aq9JfufN67?3xh1nTAsuI3KqWKOb_!7nu;Iv=nBnK*bw+d0$Qpl!De z|5QeWCXdbX`nBp90vwN0R2)xyhPp2?V0XZ8zFbDP^roLQS$QTgCaP8wJurCAKZk8x z@LZ$0a@JuHuY8+)qk+T+AATX^Fn04`p!goa!p`JArOin9-|wrUk(I0oR*SP;V;W5f zpevdVa}$HtUTx9co_;km&04X_e7URDlTf%clKOIeU{shkDKi+7{+gD%su>y`>mZIG@(?Z?!dryTXoF0;tZe*}?vv?+E%`<}qD#*nhU)Z^6|J z4yM*$PcGZ|LK@Rjr+0nfViOEslrpBVIzEg+bszr((gh%qoPO@msZier>Q* z6fw=}cwZksZ{Qw1ZBi8Yfo0nNPS5M{dS9G5q$Ob#R*{$BiA-R^LPxBIVh679!%_DX zC%KNO_M#MD*NgB?t}F__$9d0a;71)z=16PKW8P9HOV$ldZqFi~1nnX7%Chsj9_#)_ zTQ22n?ta({dz<4Imqe^ZDpKeD2?ej@?y?~q_nie2U?D!iw|=|gDQJ4w?T<=HlYiB? zHx{V_e~H3cW90riU51f*2V}vfeQCUDQ#^tyal=#i1ELKf1T1C{zCL%MmH|z}Gv<+4 zVZ#Ftmv5+v89)Ek9nxIg4kk}YeoEhkKQU*s95q!rg~5{ z{UhA_WQc7ib~ys3huS6%HSH;w)%0S&DW5re-I!5g*xZLZ@nBR}9;8CXM*H%kF829> zp7SIj-#CSfvat@*og|l9+0G0z^1@QpdrTLi#ePs`MJSshh}U;-~zzP z65-ryXzJKZuV~$vg?6B=g=#RQqye+!>};oKJ|vfn5=5AC$$a+W@DG3x8=)6inO~%P zIN1}MED9$#t-#5=8Qc4I)5~{tHEiGJ-O^G?m@@%7pd+2)4AbMj^#$TQH8sZgzMRRv zgE};6l9bzUSxRQ2a=r>_MY*z6;EWUI_!moJen~5`jWh|(#d8NQVO^epLJKX>{t4ur zeU|w#(Wm;g4Yni2<0N4NEh0j06UrX~t$ls*(Pq+hj;K$UT`bpu`mT){{v9OWik>H= zZm{^yDF&g+7GA#0TMTXa=-+@X{4hrBUhE}>-t|E7A(}-?i!t75)m~5FOCp2`y^u)w z8rFB(RxRSz@RXF8l_+R-k3X(_~)1-*CnqYTZ8|Oz=SzI5)*NXi=d=P|Z!? z0w8Myi+S!-bic&tx4hU3YJM`#4tyKUx7*@%2UiXV!-uu@7j#oMI+jz_UbD&pPo)B% zNJah|s231MNUA#BB7WCpG8hA61%lWB_X}q1oeW@E+v=PG}uh@(ci4|b0Gf7w9p9-JJ7HoSrkaNi-mUGVK1EB@!jI)O$)`bH?aZfA#-MD z&O1k2p^#f;XZjx3LYy8iwIq&zo_2V{tG$SXh!}IFc`jTbFBQlFDBdxJ5XY|MMHWXl z{bIdh?umW`%gDe{-+t+_&ESTTjfSt^X#1iHf{Id@ zX7jkLAQ_eWKKue{>}kJW1{2)UH`Vvqo~k{YsIYfrb}d@nZ(oxQHFvP{rwaG>ZI0iAgCw7Aw=TcCLEcSE-95!{|-Ss`tbeCI^Io)mg2S# zN{dwkl&x{K`?$A$3#H{(zaDmA_NdzZU%cUVtA||%%H1y;bKF3Y4HdPp8(XM*g6#T2 zA}hdTH|I`gKXXX06USEEw8p~t9>1_HCrmzNJfl_Z$BIhb^5o(k;$f}--utQ34?hqU zuV<^em%YwX?NeLTvLcfo==i-3Lp3mpG?BmkXlKbtbo7PkrD+9=q*-1xh%3o+^U8gF zC-%tvEBS34T4E4@P@uQkbm3WduM>P&U|AY-oA4usWK~t^r$6+fS)AqYO`mPF?>X6x zLz4El9_#z~d?+EGDV`M&b<6-VD&Gz~AeQ=^5y_JkG!s5x5jVu?@@!9hb8%!^U4It~ z8e(w#g#X~m=)x&}@8=B;>N;DYKAP!+S2EOySxH{%Q`c~g=74NEqZ|{iJV#-41uRwi z-EX|R3gAYQW>;vfNsMXItP-^j&DhleoPTVGQ0Hn5gorT)( z++;W#mPagI=p!tI`3w#yLnJf>V^BHDls3Y>-$i5*W;7%andzKeqL0C7}hFyE>g+dY@!)`K@% zo$O~B13ukpzQ5cX<%7&a?ae2{x>UjKRgY1*Nmj^)iO*!(Weeq>|#Vh@DMf@^Rl-5Mv}%!S7f5QRZ7lD=H< z>D>PJuQ{xAtBd2VKEjidW3cdc9d1*{%EIL3K%#^9MPvrX}RRhJe_AchyRh;|K*B zL{C@WtOShD?exEIWb+p(*=nz9t2Sn12`#-Lby>i>QVK{9D!aOK**|Y&Tgn^;!VHDy z{dHtM2tE{@wde z+pY)fzwhPGMd<}CB0AnQdgM8eCbGxm6t@862o)L%aVm_XVLfN!r}$?l750bU#>B9F zV@h3w5gk1RGbQGl^X$M>%#h1mz65tHC*t_SOrc7Gs>gu8n))g?<{b&RVIMV&&*s-h zlQ!)-?~P18n1vj@@IiGrtRTwfU;hli7>=kfhfbYGd$O!|5=y_B5c}2C_4g(#=d*GX zQ}<5^kg!zrA%s{y3XI&N$AYaF42~*y$LD!Uuu`CLD*8Hyj09V2&hIfu9SUiUa|MCc zF}%;u`z7}$d()q6Kx2FP$^HpCk|2CH8|R#tspsnPtZpmZx3CjIbo_;$jHBq*zHd-& zznyehaKFCr*d3l!A<^ylm^-RgyIzJ*gNF}uVhS(YKP^GCdUV|2!;iNCK))e8fnyI} z6jsldswZ%^-^AqY{=(oxV31`1$>4wDEO6;m2KfS*4D_kaQywwOhq*Y4Q6rKtH5h}$ zqE(nl!6!0Smr9LqDJq#wsZf|YJqJ~d94ZUKQ-WsRuQ79pr-Cg#w)3@LoZ6G=hS`-4 zj14G1><+i%{4uX*&{6#+SD?UB7_VJENO`PPA`HGfvew*u<5 zi%bMEY+ejEGvl5S$lQ`d*V>g?74-jD&Z|gHsVt~7KE?AnPgANYGe&%{J3m(=?TuYzd=#SM_2vSRV!=z;r+(Fc>Rv!C4HBOBzm^30#K<1i;bCv}37dV<4jO^0cme zO+w(XnKU9$R<#f~E_tTqlTNHBdJ$e8+ZKz?_P0g?t{Im6{qOp183z6~zgy*kqhRIX z{J0gw#5{E%CU;Z?sRSUp_o7n_p8n4zNN6wrFFIxk8jJzpoNL0rK4tIYR4ikb`!rwC zR`}+d7+2hS>%`3TtO$6J_m08{@V!s5$AKxsx)QA3bDXwsh?elgp&TX0QLqyH>= zcwrI1Ag0DMB&})1KoqtC$bXZQYhY5S9iv9Wx*y{Y!OjTbG|kJ61`MuXNR^2$nBN&x zVhJpHX{L}o$>ETtLe`(WA&C$ow>Pw%^dQ@>gfBXD+6W&3xYvovlKqnH^g zkp10E-&xtoukxInMlCnQY|ErM30iBX>_7LY7&8iG{o)8&^vqFLmOagDdDN`bN_ayw zcikp!Jm6W5B(iSMW?^Fm2nG{G1dcm~2V?wt3=c*||BnavbRX*RDENtf!M&e$r_7_i z6hKH5PmH|zYH%@D(RR+vp`SkSFcLTpxd|D6o|t?B5~6d*h@k)*csUTv>0IB)i3cr=fmkYAw#> zv0~WX>g;e(ku!?4Muix{akkt`jwgPmfFa_2WAE2B7V_0o!U?ckTq*>UD9*pUSHGEi z!atm(yS_>&yd~9nkDejDORhH}iczi*nB^JQG8jSe03#@-VZmx9y2$`OD?mk&k!$yu zzS!oBtF$VqoN$v2nR@AiK=$^2nWp9vAr#3S8B2^odIRtLh!o`AxUG~%xfg;8Q=7JT z-1len%kl*NH1!*{fs2^J`cxOa|Fp@ot83@t-XjvVzfn3%)@=QI>wDZa z(wl9NC*}V6ld!r8$GR1o?_^W>X^fk4#{m#POnJiwGjbTY3DkFn4;R|3-Qb~Y>be?emZ{F7G~>Pdtzkc28J|4+U74m^ z&FQ+kcXIR5-`^R&kDBzSePn&~saBqVH-KsPdtt?g|28zx9McK=J;*S^a)XN0V*{2p zpWNt_>`J-2(un;%eVROZ*Jc6>la<|oi2JfSg5J7C0Xfp|MjRq1(xz+}$G8)gm#Hdu z#KYHC(bP(hg#{=&j|$EuvkRE;5U2b5e-ejF&-JHD6(&7MLLnZr*R}gInPquD8*CF> z?%aN(Ej zZ%7u??;tWXU~2AjjNjx$@>aeE00#*mk(PPE9ecezM9fNl=H z$rLB|#0Q6GGK+y>oH1hyCMT}iv~1jeoe7)>df@vG^%ysi{MY7UVjl*K4J=gG%vMM9 zq>0FImPF8PumpW1WgP;Q6d~0NRPr(r_aT9u4&zm=Gr{$Kvesk_@GPGLP`1> z=xt!FnkXM$f4|-Assg`}4|Z^^=$Syd)Hae_M+P&gsBG1~fn;+_@}{-y!2A~d(+8(l zsGE>9wsO?Cb))S7V`&eVvkCkmNA`bpZRF6A3V;4l*=vI0p6H%FsKT>(gKu#Ws)}%*e9)-81L(Hb&wT^8RPmk9Fg2 z%6PZO{o~>-M~ityAWDIwb!(vx`3WQGe1BoyEc5JWR`80)Mx@|K0FL8EpW>m`7fpIO z=--B1xK)simv-Z~CbGAHYOP8Bc|5@u1;iH~AsrXP;h`lopka4c8JVdc-gnmU17XGc zoTf`e_uVGImbeqldvWZG&yd^|O^OLsjhR;LE)xKN^uIo$60upu&&KOWUkS$d{xT@I zC@gsaKU09d>hU-in&`>b-&$_b-imV_yCSvDh=_|`uccQbprH(gSG1Um5uV&*pjR}q zBIes^3BdgN7zSOBHWBFD1```G;+<2l9kn%JDS}=-Il0JP7O)@Rw)*47i{K zLKOjd8cv{ev{&Jhl%9MhMEUJ;bEAuk!iu|hHZ)K zUo!f)x?{wbO7udoH(LC|qw5tZ57cRn6-vi`o-Ea#wFU%7$Cmd;m4P#y2m|~tDQGg% zNN1@niVpO2Y~A+NS!y`)8;|z+t4*>eu=uzuJ|} zKUiidn`f#&`;|qdHh9^i^k5tkU$BTk;G(YBd3JQRf9h6xbWR;avkW-&W2IdY^D&=R z3HXdiT296Tsp@LTgpa&z($&Q?YJO9nXUs{|QGrc}JLxq%dv0}o~< zr_jX-IO`_htRQV*02~+eJn?cgz(*0Fjnoy6Jl5QxP;fkkuTS?h=BY^8ykQdRT7q}X z{c(Qielph=Eb`=B7!U862RuxoqS1{n-)@w5p$lAdB44A|US@DstXHv%ZQ|v@^lPdW z7bgQspmR&B4*(ddhqD)@VeURy@JmI9DsfcCNDJ4G6f1%93Ef&tEV_V9md7v*T4rWW z_<{w6r6wt+{r^EW1uy#&0Xkxq|K;_G)S2iAQ-b;F00cGZ!vxj}WoAW9tu^#P8#74c1g-W^^=0eii)!9| z@9%HbFC%O=e<>zcY|5q;yN7-QNGE|wtzzcPzMB*`B1SME7?iPtcI zd0udL^lk~5U24s+_^-IA=EtA}-<@ItcotIE%r+*DlG03;_A;Y<)Ft1B1gI6pi9x~k zp^3pSn4V-7fxKOF77puC5*yC!L9GsF2?=m{zBs54`Q){2;%f7AreDVVC8@rx#y+99 zf1u_+k5^Q@RK?Y3ljexYcK-Xh(6|10LPWyuBD21DO~~}UknGSw%W~*8j(t$A--BUv z1gP2ff&EEX2~orZ{C~ZrbhiTuM^Kx&iNWq5x}VqzfD)v$*sR4}v>&h-ISwVivXK96 znY8@ybU~r?IN=$p=q6#2FUIn=8Et(=4@)dOnN3gPp;)%??o;<&;KxDBbj3JwN`o=sP+vz}cin!OtzDmW_y#G{C~h`mJ=jj+c+ zQ91SA%eKc#;;I)oL!Gv6i{WWrW`mVif&h|$Rcf3@D293yaaX z&HvZ_H#V$C@ViYYmWWIw!qK3p^ns$SuYl%mnwNC$Ho=!OBzv!oiI9}8xH}>vggk$o z=1%8HJ6i$E*VpGV=e_;B9qZ6ni?3mSb{LU-*&_-70qVmQA$#2g4S%V|PF73QU{n*1I`OAsg zA~-sJJ7g?l-@!PzMp|4c`sLXcU;s?RtO@}X^JoJ3mjLJ`bGpuK0k2W%k4}8cJU44@ zw3aR$llvkL)#x#vT=0$ zH5;nqzuOlW$;?0kHH9pTA0i|um=bPVPTg>FWu+pg#BKoVja%rCH9*z4(g< zaPO*dC+?RCOh60;+4Q{sg1E+sp%6t4iB!4&JZCw2c3DPM1MpRbk(19dQsH?ZT@){$ zBIp`%*|xdA#DlaQNOp3^xBWcoT~TV5fs21CHaOpdS|46qRwb+Y-}!?49@5fHfOr&ySB7|NeRq@D{wj+X%^G-KBi{4n9AutQ$86 z1P&r#1WvuMe;>%rHM1lVOz+xdIC+uCFR2%YPhWve(g$p4T=_6HN8SQcaCJ|y1gVA= zBVEhnn&lx#snI5Zt*-z=eQncs@NDoy>8pPAYS~mgI4?M_M|O$;kt@ryM`L6ce=N-= z@3n^fjhdM1@G}rB$Pt6~uz&<=7(A4~qNM1Rzb_c^?GIKks^kX5+qV2LOylXoHO*d7 zYU;3X)gn_BDO3^@0 znh_8lc~`u+mSR2p8>H|0v~2#Tcg+oI?ab8mDFX`b93_#uLdT>xB0aep9iwFcqkD1n9YTE7?%UlzJ_ArEQfj`8tRcH217YuE{lR8edfA77z?DPp7o_ zoqJAs!Z_(0gYgv`Op=c?o+yM(`aexOX+IUcmqi#ocpaPlk?)eM>5?QTu;_OC0tIlV z_bG7|+`_(ECWVah`qZ9%lm}(}Yaodb7+O@l4K8UQN{JsbdG#W#7AHZ4QMDtx>KPc2 z09>V#q_Xc-{$vOs|Gt8DkG`(i9s{PtxA)il5!`&K>8lP1W6Wc?XV;|z zX=&9NCn$xyICOV>Hnp-~gB;av0|fI&$u7ls5@tN1HXdyCR44ou=>PHDE_h?Vr>3>KoUhvWmvZ|kbw8L!=h;5DJOO7`t0-%q z`k#O!zB^S*l(dqFAjPl2yhp=7F2>>s07xyY{vePj*yUiJ0xXr|M#B++0Q+KQ`nR=d zU#GU`81Jke`5uD*JF_Ui>85|b#fQWPo%#Dl%>fbHau29Dvo};ak4x4jZXd>ipoF=f z4kUn&Az^=X)cYGHH*ks5t~7#;?x->W;*({*=`r>06deDf&=lO3FwZvL z%Jf{T@~;XZvbXU0_f2X!$8k9C+?$HhsjMNwg6zeAEAGyq?{8#n#DMe38=a@UQ!*c+ zf}uIx&MSITPPBZP?u43ljd41~Zi(7{Y_MFY$vHuFmQl3zd0e6Uei^luE2YCr}c)J7dpU4X|K_BQ#qnJH_%!ipJY&UiohQrM=E^!h>soh78?bGrc*mVM5*QRgzwC$CBl zrnV;7L>K$(oHUv!*~koFt9hdvyw-%3KS|7?99S@$&F1%9gIanLsjrm5oKH9m%vL-% z-b!f*ec;i$xer2t`am%I2-x_SYw1Ax<{nf&$2bXEPm+uue)rx$oZH`>)_p3FxajrL zX19lDoVM&-=`|dyq$a(bC}>}kcN2H8rI(XToukLAnPvZISWf}J68AXYZu6zn2LtYH zETZ=&FJEsIH&VoLV(vbP?qcV_jCW^$LFo&GYU{jTtQRfa&fQ*mSYvWbT0#0h#$I^_ zk1fjCbWD^Axisi-0U+vsd%8fLAUY#8>!bWDc;kg$T)*fDxnr-PTLS#`-5iVHnK zzW7O$gM-S9Jb6Rx@%LWcVd}4!!KXUP@l~Jo>A&~l4~UZ^7*T` z1R^7Q#M|ZqWdJ12dJ>h=n&A2;{y?a9qP^SX0v=|HONt`21|-uiBvtTqfYg2-EcVtqQl;ba%nqbSnt%Ya(RB0T-gyFi52 z1IoDHb*!Ves}Q&q2}BLd=2;uJ-1f6}QA3!SLz3}9`h4S)cUb_p`fyz3|+Yyb>42|*Zzm`&etiI@q8B@$j zsttk*We=q*0+dmNK(L@n5pSN|dvEF;ref&D!&_7rRG%b%|oO*X`cL*+EqjtG+!ovD5fN&pPy zj6nVfNwEZrgdBXrKmiA+oPF8}tHtG-!_jhh)h>bzL> zMh0c~<;1DLo`L9uofW@xlIxVV_WFA)+_AS-)eS3~4uzZ0m+^Ke|b~ov=H7d3F?QQEY5L>C1IcPfjk1{*Y2r^!me3od=_L zfnX<-f>mnQl2$xhwr;c{ZWYSZi93XSjUvgotI7N$sc#6&7>r{j*xhS3dklX9KlaZ> z1}t7j7@Tc^FRXagEsf+_p(=glRJpl$?)I>-*8^u%n25Na;3yIF$Nw8Mi%*nG1$PoG zua0(I)VpaEA^YFI&xH<$Fl)E7cbZ^UZ^Y_0+J7T>6q8@~@6Eu@ZYeFemTn%D6Ab0S z^rQ==1*QIo>r^6*j?QROz{~33@*^JjRt!U3y6o%C$mV3p*~jlmz?J75;^D_#DUV_6 z>`=~PP&4am-x(Zg19h-Hwgp%0?9ulJK^L*}k8eEQm4Dv^Nnm;bwjdxFzR(oD1G1n8 z5-hNs@8~i{n3kXs$vl$(KY?nqxncs!LX4T$h6=owPrziDq8KnceNFzBqvRJyAE~kW z|DxZ8%fM@lzpFH?DCcFo8q$j#{uyeeP@_UpYzn5WmCeJye_2i2os{8?CWy+_T{;Z| z5p(B7L2=h`FeIsWR8@ZC>d@1(^k?L@-=1&djs4O-M=Ogz4Lf`@x+Tn!4%l>HNag?Y zdIsBmF3h+xFrnE|Sk^<)J;o(xq9d*jR1fDrXDdAegKI1fQA*IW(N3N4ck%Azx9<%k z-`aXgpBh1FHCsSy^}k%T>@XLw6UNz2nn%NXv=y|U8Ors;EK~`GfVHU~} z7?0X~1E8+!IWO?4;L&xey!%ua1Jc`f^z%IjS*9NWd$eu?x!Bl}X@4(+JQ#IJFMP?d zH>1?5U1o4l@MxQ5<(yrBFN}!j7gmDRS12KZz4UAk^3*cX^sU-6egS;>2fC#KbS6jD z@&Dz)&9^-MWnf{ZX8*VHH*=5NNNads3h;ip`+VC2I5y5EFB!N0k;yq;y9sz0DsVR& zQ*Zcw^j4Z1IHVhq7S+sEmRnNbBejj>`$J%F#K_$VP$F|xr1ebM($=n~v)jrv<}p%7 z>0xt-)V7yeFP_JW_rRk3HiN0>cfdA5 zTSf5yn^UHLCEo&Gfh1WWkm%hU30gR?>F#gfUk z;_F*8?0S0x!+Zg<3k=ADr&y#M2Ip%Qpmg+PTkcI`>^48A7uD-nQ*HEm@B)RBIP1ROtFy z)|rIg>RD9ngJfsB;B7w|9sDHU`no568hRj}Ndl4~?joRuvk_NhDCKODH{?2GE-z3x zGe9D$jkSn#Qf7bYr(GqH2n6(jkaKv~XJx5DxfDU&?E|6W%%FH1`(7G7%*tWl4(T4L zSVw=<)tvjXD7DZrX^p+KXiGUcyvRWl+pqygNqr6T-R{p{d^mMs6BY2C$X`}<3Sye$IuYfxxxE|aZW zArcp3p8vf^FP8ZLL_$C%DOCkVS<;$3k+>CkC~Rpp5>W-lDLI_(s1An&Q<`H}C?Ax) z8vP-D zb4R*iAfGtfUQ}a#Y#rv3@CxoOy7ZwU5JX8j{SEumguig2U3bp6G_2H)gGlvj4YOz= z(>pPsiT<sQ<^l0d5ygI{Yfm#hU_na1J6hO-khS9vb>d>erje3hS_6pMa)9`Q zORttObHf-dE)kNo+vgof5CvL3X2*bQQFt7L!L=x(I`N3x+d#Nz(;Hcv&b6p7I~DyW z<|wB0SX7{Kl@V&p3r*DS0$FH)umGoscXp<<6mGqkLG3nXhj5W@1f)~Cqy(iK1f=`j$ItiopLfP#97j&E6iLWLU|u3gveguPLkrK^MU7#8z5Ks%Jwz2z=cK%Wpyy zjsFH1cZIJD(j=g+2;5KjGf(z2$@VJeOph@ZPNnv8GyD<)9Hu$igLZEfGFMH%8SGo| zWUr@xx0KD;XX=)h`93irmTv`F9*POq0lv|X42p&OOgq~Xcfx>HN|L861`Q~2MSvg3 zc;s&;tNbYLnDmY`(X1I&!lfVX%5Br!sirpx$G0gqq zUCVrg!`vK5PSM|Z)_n&CGi?s1%f{%EvS83dZC&0RunChRTcWb#B;{%MQQ=@6IH zRe(auz(v%D@Vx~+@89iLjjgqt_b(`Ew`5BB*~ztvaR8)lIIb%!j1Y8_XKZSmS87Ph)|?XsNwW!@`)u zuU&Mrs;B3cq&w*1XOwKe@J2_ko&jXr;S+bDZ5}%tgUrWL!TBe>(ak5)v|i7I;9^eaJ;U{^=Il<-YXVhfFebJd^km zb0CUX%tBj&E{flB*2mr%ZHAai1uw)txbFt5(gX?72rCFa+6Akcuq|4V=a!Foa6-9y z{rduBbHab?oD*rsbzH0H^^%-W0)mbN3fB4+D+DF4o5TBR4C!$_gQnnEiO-%>nMA|~ zZl@v?z|CN`f+5#hzQ{*L*Y>(b^@%l)d|&MtOH>}0FFBm#E&LG+Fwkm06T@A*yhlqu zVV}YhNP@T9NCk>T*c1^v|CJ12ZXU%+nvvV7%3XsN`#wgB6$3P2>N+5cmm5Q?-LruS zmz6hTUgP>yZq0;&P>jwgH^6g#vLjrZu2)670V*?wdtgWq_r@1Y^2790VOh{3()>jd zS@_$H80dT#9w9KOn4=8$7=Anue1?l{Epk6qzpO#FD8KfhVt8 zIZ@0Q*5k#eThDGwO*Xc!2sNVtalEx=+y@O*rrT#-kLtXc*!;`{M+SUF4m-}LOMiap z|JX7DDYSHzEsF?+j}r9`@1-sJ*!*J}azY0b0?DgsMCR)!r{3q1`b=dFi>YuF&iFmT zBb37IWqG)~+%vuM3hWzzR+15Y`zI!+SVJ$LuaHa*k1LLh8tk2_9ee<7Tg*;~;B>Vf zW(mBd-g-NMP<4@Vdi$*$(6ju=8Qvb0-(}F?-pMg~y4p;$zqr%-1Lgml+nw+6nV|z$ ztiycpv&?C)E7Z9Mvw~Da_a3aX`2fndA)IUldwJk?Oet@BxYhrUDhct`7nV8RGZJv~ z@Zi?))31|Zx|MZtKd^Jflu?y<6Zj`fy)y_FTPI7o@h%XYV8(B>nBr0?#R>VmHrBkKXX3}f!HyjwWzL^vI&RbE-fT3 zSsR%aXxVgI$%pvdH}zdintxt1iT>hI+0BteX>#MFl|)Xm*PMKy)g)GnLy0Si%xglILc6krecoG6 z42Yl%5Sc`~J#fu0K9E3sMLrRp00$UU5`aO4ou-G30<}G&_WqM?mSs?^eAo~AVIa&) zz}iR*Tnkw8V~X7lWPAx4b=1~m+pl|{!d-9`G&;1mfA{>Jrjx}x6fOHgC#x5u_obqM z6l|U3C%He1R)=e(^y_xy2HyxiRg0yQl?;_;E{JoKd&<9<$+Nc>=g@Z#75;I!T`H-H zP-PzkawQiA?wuh41xb0$=t}SIb}6l9ELkjc>IGmweZP~4etW==U$XBSaYH^KXH{wR z^wO3Ozz;Dz->fGD$Fle;A-(j9aN8?D4QhAb?CkqJR7H03m8T${0RWBkg6>HiV2SFz z{wt)B7NDm8Lq*KXtGdfnX_?+V=jI{hw%11}2_Jef)G)+>V+ue4HMCzpI;kEi9%siv zyB|6TiFS>V_1eE)dt*w5Mu8}=DMuZ@zaQ6xHZC6nWly4^G6))=pxQdaj>TSjO}Os! zIQ@pNVb6fny=gv7G}T?8cJ}z?aP6aG13WJyVz^6q@!SeN^Fu?l)!ea9G?mgVRfjS7 zU4uZYCYQ6Av<|-S^*#+K$313y&04c_$7xY5)Cm|ijE!)4YYbN+(a-X53xsgXFh@dZLc zyz)dtqUCdOMrDsKwJ9s$5HqpZvewuDU4jpz=3)pCjJgAu*Z10!e>ze?2m?yG82=GB zJ6xnEj>yt`|BIo?6c;>1f0F$X22jxQ5i{<5z+tZ4e0E*T+eAJF$hw0ZfUpj8 z)9k2HK4#EH6i+JF=nWOXFk(NK>Nm*dp(%P37K=7ypml$NVw@}l=FGb@aFUrs9!N76 zvet~<{pWq#BXL%Bp^CG1fcalX)1B27#=YloxHE^Nk0d`8u^4;hiX}&uo zAXviMA3oJllxUh17L1!m7< zbrK_Y96hP~ChGUN5eI_6--4{>ukmgG8z&wE( zrgOBA@2)+^0{`k4oIMN>s zGP>a@urbDg4w`$_&B$~UCqObD{4c+>E`8nIzSOad`FPI6az_!ETApvTKoe&IZo)zE z=8tf^^#Q;|DO(J5M(s75S@Zj>X2GerA0Ea|zx8qO$_DflmZzieGt<;isB+v236UQnDF>EoP0=}1EdMP%BTmFkpy%u zcoZIT^SbeB94v=9-a@AbHHkB2`py-vWI54^{m0;3B)9v72zvi@m{u7NqKXXeI^Ns? zSX}^G8dXdN;i*=YK`Zf0$^0zJ86g`3asncDo$vzF(8m#tu*SNM#Xvwt&Dr6p*4*j! zSxhc=SP=4$*lo|ZMBPmm%3R|FrOdyI>C7cL+SK)1K}_2={mZ1tQ->o3^qJ_vXB)UWi9KNPo%6t^5X1$e2x@-%d)+q^+p(+ORKIl>rgY1A9S?KAj!zkOWrTD(~*jzLjBCn@-VP&%7=2`Vxm$;DMyfzW~9d?2L5iJTkm`PQ$zqVws%>+_km46hG@*pw(uu< zOHY0*uxHW9PoRW>?<{|iD8RwgXX5SAMI z*~{)b0FL$CGY;(eMKB)0z4m5d`iZJd-)$JfZ+R2DrrrCywcHo4753?0n^gm@6u_XV zA~Xm1)*5S%OgFG;0;iA-{!a!xq>?^{J!yJ$kK5wZuUK0ID2-rrX6XO`Ehs|NC_eaD zm~3)m6VMkKrZz@3KzLSWkzIOd*6vUKUi+7exbrifB9(Gds{-@CNNDT=7zQN_Y83Cu z>UoB`dse6^32(`%L12Zkr?LR7ppp)-lRu!0?8gZ{-m%E{fJQu6%o9wX^z?1Xjo9__ z%UZ>`h=rMI+x$tg!Bojf7j~$hhG|ixKH#DTMGAtlZLM4zscEly{rg zi^?QQ2js*)KuX;%l5cpulFS_u#3jXyxV5bhHRR%Q6N3TGj^>39K=l!T0w?7kFC-{A zK&HksPqH@|+sew_-O7`s@myz*I7(B9W?GH0WuV&O%f@rxv(ZU;Xp^j}*DfQP(jP-Q zuy>LZTw^;HrK3CDM%9Bf1dA=RBoxFB#nA2!wQsDM%nOpbQz7?=P|u2(gk6q~Xbm;) zgFlf*=(ykf=`?Y_Wfn*$Y!Y*tF2uV=KW@+r{4x&&{W3Mr=>`~(E#{zM@gJhr0}r1% z9Eh^1_bTqM=fCv$vP%Uelbs`v)_i}HbbsptbF;<`OkoP=T#L?yloLt_ zaPQ5!XdhgwZEcHD* z_J2H8Z6&}`VE_Tf2y0ZC)yP*7b$G%m=0ivqtj*2NS9s5ia`Rp2eXpm>`F?p0QgbAC zgQ#%C^)x7CX?j32Lt6t@;q=+K1UdmZ7T6 zqO41pZbya{!>(b`nq>;uMuHdYMg@TIP^iH4Wfz0pvhn%5o7A$d9dDxZ3~Bi%FY68h zwU3EXed%lCd|_YgI52G8B--Itl@u{i6eYbfOhG0aQ_fw+AU^NSq(D!$pRaSKH}4s3 z00QGmv~z9{g_Rn#X%#)1x)0ii?)#W{K3y&!`|!#2Gog1-8;4cM@5gUY?3&$x9ITeF zhD`2(x>$c}`s!Tza({Gh33__^KRTyBeS6~w-UBr?qbhPi{!7Y99H@MCV0G)hd^|M- zBm9`AX7VxC_#44`a&)fFa)bWJRSHVgf@?L9_xf65R7n)A=|k^>>|Di6#Cdtald66u z(v9FxgX_7i#9i?0fcq6xphYRr%-NLRQ`b{pB!XP1QI(UlV$HDM)FI3qUvY zYXst^f5gMEa~8)y|M7I6WY!&!m=&RMd{cgLfcOO0{;!)$RW z@70vh5*cNvF)YI+Q;IuV6%_Pb#&&p(J9v->3G?-$>04PF|H>KV0@LdIJuih=fVxA! z9^j3I(gHp`#Vg!BkReDIA)DG$71PpB&bS9WsI+OC0hq32cT{LR;=|CN`d|7rM=)sY zj6wCcUcNO2cyl@Ze{|ZO5p6^kOVHK@4%|Gc_qlrK^5iRwa?I(VzC;rI-u{*8)_V*F zsN$mPT1v~v^6U$kJ^I{9?x!nZKpCqL;n2VrU?z^-E_ofi!@=QGk>*#vwBR@JN^8Hl zl2Os~{4DK2j6*YVH;a&XUj5DOcIF$wA!X2GU|2Ju1Cu{&WQq<&ew_$IMA{Xo(m@PW zI_e0K5a;Ra`-lq~*-#Y3W~m(T_}2Ap^`8|`kHv0*b*EyF}-* z{b$L#vro^KL2<-PBl3q;aw>Mcs%?J6h!A-y+d7$|qnqB&VzV{~J9f7L#sg-iN&^s; z64}1fe6p+xfciFc0#sZUSA1(ykfW~Z{cRa)h-FI>ARF10byhSFOWbY$(c`CM< zVuQfTR4U`)2sJq!~aeg8|N0bmq}25O#|=Z|c_|ZDS+? z^UXjwdpG~Ks$w|GeGDqH9-tvD-H&-KtgOgwOO+f(=@Z5%dgSuX{f@RCOSKcd96 z2{hcjvc)i5R{3V4W5{vX57?5JbGldW@!~ElD75+n7hw7@LD6Bq_Gz;hLrT!*UPc-Q zD1C(A6rcT*m+A*H85+y(4~8Cy2vM{_tWbx`^(TRK10H$=Z0afFKnw#&v?$w*53;|k z2Z<8xXSegjS4`5g!_y*iYQ%jL;3}|3x({tvg z@f`gq{nJ&%txN4Eq}y=V*H^SS%8~omWeUI8*6II2-2dA^E4FI`JzK9Ei8vs$8+P>po#y8-xwRFUC%}dLg z_G>_+^6R(z5QA(|R~|5AJ5cd@^RH}?B{@mfDTd+z>x)m;+t0tMb4!9zt?gi+n@oMm z%tm_buLi%}BN?%wYLma}O^X(^8AsQ_xN zGSY&cRs<+%;GKx{gOnCz8fhnHScN7aF`szBqQegXTu~NI_G5J*jcuc+Ev^d8t<0r= zS2iNZ(@7^pVev*D0$z<(VE?}9)nH~OJ{&{}If5`r>z@4A@B|FdgPK|as$Yimgp^b2 z&wmBh@3bPQyv0b*MEJiX;l9CYPhD7CJCoNhFwgVvJMGE!xzv~OPJhPmso9X|^o59_ zhW8x7`HuRXT%us&_Cb>7`#{GaE*HpJ96M3!uHc9hW&`|)bMQI+h5MHqDyUl6-WWpm zYRKqVm$VI>7QKR+`3q4nn_*qf5==?UBtY%JzyvqLgX%=tu}u2(8(u-dFv9_sj2U$Fh-K{}JEboFazJGS`Yi2N5_F&ea5kh$6rIl( z_YnR{l{`;1Z_g(qdh-Fh4fc84V_ShxLle3jM|r9LV-DM@C?$a+uwZvPEa$NbMtKhr z`^)Nr>6Iq z*O_Y)Zr+N@+~h#5IKDKyXW;VPYLmxJ0D!H)hl-7p+o>xUAGuU0--+>@`4 zLw|jKlPv0EKrDvZ_z@Xx3|F{K-ZYAOI=0uaHsZp4X!f_X7|T#E#o0iwqq|?2W7DiE z{Nf@Dj>`k-f6UK7mtO4_AS)8jfK#-Jn#%`K%@2XQ0uWRTtQ}DMkOH#=Hi`q%37NUN)o9cKJBR+f!gRk z<^)GAf4Ju`hS+dlJLMaDSjc|lcAh&tD*Mo*a9^BzQskoltD|Vs{kpLEivEH;4!U&h zVH@FBZ*Y3<1{Ad?2<@Eon%g z#x(?r!T)P!7U}X+DhzQn>tdFOJlW1!Q~wjFanRrRX0SUjNW8Bx&ZhD2ulb5ms;N76 zKkxR_1({K`4y(46ONVHxJS8NkVOuei{AwcT-x5U@ZP)OQ`{bHfJwC}_<=Kv)aQc(^ z1-KYq-i1dOrA5=%le$W7-9v%#%&X-#O@5 zy37}4F|j+$c!Xy*@Evzpo}qosP!wT2D0#O|xju7mt1Ac}d+lN+qcUC4Iax$>U)p^? zWJS!PDDUt(@edY#UMTPQe9m>JJ(oj-D$u7A^uQZgqc8cHsmeZ(-j<(XaEn0--&Zr&VU9_Vt+;gvV3YYWgb ztJfS}SuO>^POgYMvMGF5-ZLz5QAT%ra6Vk>(Z+e3j&9PMVc#col}bO8HF$y?=24_T z4?84HG>7RY_c&QUmx`UdD_mVCm}m&#;E$2%1P@ydXra! zIgip`25iNQ@|@!akUB{4b?0v2BqAzo9r<4}>{nL(p578WK6ao9nRKuT#0Qf>!H>|R zH((g(@2r!9)cA#kekRJ^)WwnQTh`eDu}S1fNz~co1KF}4V)qRc>zLq$$KZp@P3|c~8`b_6(wvfuCTO zY>r5nJyAw6D~`#cXDXoiJBTELc)1=0nAA%6ZMKc6fLF7k;1->P3D-zyb)PU{-uhUD z^Lhz=i7X^_YeXzPtI>Dd0u785_$i0CR?3khX%S3Z!M*7vL1^r}ps?B58@iP%7EqMZ zc_6|=cmKPJy0GDM%-egTAWePTj`i-Q%o%`iiGe_wd1fwaTib+t@x}VN3dh>SXH?! zIs*6nMf@)LM0O+m&g?EzA;Cul=1JYU+>%mcWtG6`d}akwUgf}kQul*L0xGAPzk*9# z6!R39mMR-9E^O)grxh&CtSJ8U8LB`OW#T7Cn9;cRXgFS~3hLS{3X4(n=F~dv>e}am z)IB@D_426maZ$>{h3d3B}m9Z3-s3-@)b8Q8MmWV*tD8IUt!Wix@t4b7tQ$U2D_ zCnjzXn6_QNqE-r0_dNRt$FTNz_Tm$6qN0_Ynch*&H2x}(1LATO9CJVspaut5nccYr z@HZ%w##Cd)gl0u(g$yM_70k0U^R0_K7l4kGH|8^j-K_X$CV?Rq)-Mwl;yx3|X4XCh zVlNBd*yW5m2$~gS_<7^7&R>vJRH~{dV*+lg5Q~QKidBN)^Vgk#F{}*9o2HC|1@S$t zc{=)YsveA!Spejbw5YSnK!X4#Aj3?TCep5EQ?3K75+A+NS}6mG%7ST!_=d#El_cOG z$3H7jrRRQYn!uPv*Vg>jmp%YcHa^9vk|ux(sQ}=sP_GC3p(ucSp*kPLpHO`$e{h+K z4JovkxAUrn{mde;q&L|Fd3WtlHIEaTC1pKQgyii5!ON@!ocO$9^1QLhg##ZPk zOEX~$%w)o6P{{Z$3%`+>3L9p~o zLu?gEXf?n@G}K@;>aw+CV;_f&_e@M3yiMQ~QMe>o^{GrV_~lzp1h!gt0Ce3&_th>g zM{Gj6GXj$TCz((~2kS!hpL7yUYb1UUXg**kKtRuxZe2IrT&tqqMCKD5c}8%-d-Uhn z_NNgPVYtS$??+vaAuP!Y1xL8x-vcIwD!|TNl2`lTVGU%CB0vNRWsLIHD7V#8J>E=;h4De>Fd{1`V0Qup^Q6?&WrJPMM>prCH*!)^?YeKG zku;DWVk~yh!<>ZQ`IIa8S_T4Op~Qnr7D;_PL6$$$0_m0LU_vg$ z9+ZE})))sq2T1){^uQ#q_cT{AtGRJlcE>DWU>u{SN>={>|6D)C+^LM=)uvXWk3C-s z!rQxHomx}V)YD)+VS{Um()gR9N(Lx(1maWtc5nTgn_MjKg!CE41YfiR=%zlmofAACE&RMdPlksD~z zqN}TGWnwgt`T8ws0x9wkM|Dy{@KH7VUYviKK6(Nr+P8V168no$Lx#mnqw`*Mha&Z?hzXs6rpw!$#{RN}*<*B3Z62ET%hxY<@2TgLv zz>!z;iC1J))PQ01Q!&HqfDSTw?dM*}g_dtJNM*;g4LC`F=>+dO4a#mi!N26a(uP;$ zL4Z#Mnv(C;ds$y-GcL_MXkrstTm4Ky4xKPiuOx#ymY`hvx=-cbw3Jx<%7o!Ghcl7m zDYH~jpX3ORCii2}N!Plybg$Ek<{PhyY1VqfOT6bK5f3BW1Bh4vJ;~PQ`>uoQ1Gtle z-p;li-~a_q4P${pbP`ttg*>j@wYAO<)PWQeh9gb1OYz^8d6gd(Qujbn!7N3 zKq>q^MC@`QMqH*SEiiXXUqhLUJ7zKYitTLXpK19ngGJB5g!}qu!nLji!EE{BMNS@E zdN?jPSI_*{;$3!71sjWbm<0z2F13I1=t!Q%&hW z7%wkx>f7HQ(kB`k8Y4e`s5>=l>&eP@5A*W)%QWY8Rq$waLqh*imfxq?9o77Kz-VQj zOV#W8UAD#%j(b^f3q?k=K8bg^uSmoGpYU`C%tZ`>eF3#;;h}CGw}h$YdssmF0nckYLiyQxCt?5qN${xo^XIW zx}Kk1y3Pdz8_2&ahK7b<*E~Me@&|v@VTf4k^Xu?d7k)t1oo6WHTiO=}C`a;0<^YrU z8ihR{JWIu+NJdoEUilPcwYdtZnGtQXu9F5fjhNIgOwU;ron0e)Y_VqU4xLyR$~(Lk z7Wh0R5@%{u7{`cB#h2NZ4znQc*aC|^Aw1x#pkvhxl^DR>uUIOw@h>_+NFU5>mwyE2 z!U2Nw7fiU@1Py(&lg(fx828$1&M9?=;!_@LV-5^-Yp_27Hk_%7X>fE2Q_Uluizo6k zw)q1$T$_*MAQ@oX?>%il#IM~9E|MAz0UTD)z4)FZ4M3}~nlQ7tKy}W4rZPV+p9n>K zoj$(|Ak~6dX61H|<{-WE_dw7B6F8$ksDkO4D>E_>Ph`P|%2IvD~$3a|7g?n{WqC48*B`qc?CQQhYunUNd@@6RiL{MXjq&h zyaLi@tuIja|Atb8qGO%+WM-btCpD%&#HJS*h>v~UE{Ctfv;;A7fX>&mao7rDF7R#w z75z{s6o!fq#)kAUNyfLe?!2S|Lj4^CAWWI~c{%tROaMWdn=sPcCj#qWH6L{8I`F>h zm*ugioF9<5VD3v~_Rmiu)wSLd0mU69X&@m6actR4oc=ea!n!(=t$7jwns|_2;(wQh zr{%=YsfY;100F|Amzy20$h+hDb--qF-b}i5%^kG;JBm|Ta3~5jINB1xr~$R~1RS6r z3V~~Ej<*CT(-|810j!$^_pu$gD~l5=a7h@q0Zbsl*y4`bEQY4&2b6P%f{zw-IFwrLE?xf(sB#9+lGAVZiY&@V*>H%P;6-iV8st<-){Y@8n zim+mAtTF=w$}k=Rx&*7P)AP7|rF&HHF3iE-wuKz}qhK=w0~i_`P@aBimn*SDrfB59 z2PDA8VZ_w`8yG!HZaZ+Eg>x5?Om_k%FL{7=FEGFa5cp$CN03Y>8YchlE0Aajg*M5^ zVsNx-Sur4ZF|UzzdoM0zU!Po~aFtG#AhT`Jf^|$W3;?rA0o3LMvJ@pzf`+ zDBvk3Wm7Q$2Z>LiJ{NnoRgYG@#y+$q69g0Vz$?BN7P^7}NlqS}r0-Xer%DeD*K)0~ zelhO+zd^%+m)^@K^+k}AqJ#fCC1D`Pn5e(hDI09fpO$HU1|+cXDf)Z5|4#A}>ONo{ z+ImeMc*q8(Ma8#{vhrxu7sff7=SvFeN+w^iYXAod6kN&TRI|om;J%NbC=SGt&>Cdt z)#^Y06Br2=sI&C3EW0lFm$@Z14w#2?z-Mu(jo&J4whbh{EjhmbKBB$*46U64)` z+e1SH?fN<8 zLYo?;QzgBfcbGGuW!}M3&6QIr7^RBB$C&={YYcUDjZ_#+7vUD-qFw9%)0FYy{)ZIq zkXi2@%C-K6wSz0~>}M7M`1C__-ZwW(U8dhOhHC~8MxZ*~tCCC|2rEpUJ z(r|xxXkpy`ujeM28AD~Zgz%_NlCaOpGJLWo^Gt)a-b8J2_f`Msh(twj9>qWWq_Qym zj;Hxg61L*yM5F=%7`6R_1Qi)d5n+J0>Fzh_Hy-)eLiB@4CtOdZa!%b%QrfSE6Ct&z zyz?r-U1T5Okl+}tq0PgNLWaUJ7fnN2W?cGha&nt%%CmeCI0 zb2Ol{9A29ayOqw2P)*{>*cryf7!OhH5(t7-^n^!u)~HbcVo^x}XMW+nbhUdfxTATX zGs}R2ug@dYZjHxHq`uarBe+Ol%oC%YoF>>tKQi2Z*cDU6?utBm1xZ?5%g{XK| zl85s})xwNau}#}nE5nX#26}Rq6;_KQ9(K(~MeAmxnPG5jt@U8Z7c#X7JPCm>RX+<` zG*blQ%2TcSkChAJdIEFglEO=s=@m>Xjea$t0A#-~9X4&OOOo)*b5K($$wfwzSo_OR zO{61O=UC#$h1TCjv*Qu;c$5*pW=i*?s9_Z%UP=dBCHcc5t_L@Qj(SL*|ghq3nj*~Si_k=@}@oqpo`Zl)96b| z;qxJM^acxw*?Xu0t#Mp!EE*HJs2YykG3{;Jh%FYv;M+}G zZpOScAtvPIK8QOSz28amzz)}O1Ur1$Z?);@RvV`+c|>s&j2dRzxcBDE39sSg#aI2@ zNC0Zo)i+A|s7#1dB}IklST%Z#ALqI_f|OC1_hKNh7BITMqMRj@Yn5e05avZ{j5H~% zZ&Hx-wj%kC+~qZ!<>R$okH)hN!NAw=7`(M|=-CDFNnUnIVtrv5d!O0h)5>K8$yWuX z@Pb;4<}9%FI)ULLx}>A_*p)iZF=;lFPGU8?ENAf8l1=OGcI3CE0wZ?eR)gQZq3CP4Rui9VjOKHR40 zA6uV?E9ds3BA!G%37p?ZeP)&@N#-FdCzw(fOTkZw?RAkfHI9KGDgJ>Q6dEb+hll;f zuHjE|{Ynk{?I|=))20{$4GIeheI+t*m99{`V~PS@`Y01}Z7v_gY_h$6WsBQmoXVrM zrF>QT_#|aC5-aT3NE0l?G9A+jD=O;EA1dyA9>%zlW4ecAVF@C)s$HWdO>WIJc=la+ z1b+f41^<=KJn}(}_1DK*x$x(oKZ1YC0;>e{g2}TjWb~^enGvI%n!UHO3R=u@z`AqD zj+C#HyNr~%xF)5?NDYRI>K68~+w^X};Gm}ISL5exW-onTckyOgjJu>XlKcu>1BfE$ zWhjwX#^HkzUjnEwz_zWsZIbz$LT7$i_oDZUD!l>peqc93XH;I*ffc9y*&Au046Q^1 zc)PLY5I71Td84KoP@BZ_G-)|a8s@g_yH0YZYy17)x)> zT2uHs2_6bUmkU6VcKx>}Q;e(K;8;g>30&~3$OhV6zbY@uk=vPzGE66t>0OFYbe=Xp{YN$9bHCNn=~v_9*Vte-Di!i|YIh z*k^z{=880uRaLe~a?Md8yhU^t=cD z)2;7j8hWHGxQrF+F)G65nBx4lMB{JB1)&h8oq&!B4gle{e)N~PiX^aE@~2B*aYL&> z{3InQ!0UU_`e)0`ZeWXLUdVjRy@{k}yKO8!$%B0NJz%++(VTLbc-glQ!9#RLMKcD*Z@%ZY@aUA9fog*IWGF~1vuvchMc{t*k z;r{B5;2hN}k-lbiBN5;N;{^*OlXzs~VSa^jWMnDOcGT?EL8AP4_pEiBYJw5u@C?o` z)1?K#Lejb)7OYN=^Oo(j?pz$0b(?BQ@Ea%Le+`n&fwG~Nj(ocS7Dt4xoRZ7lPgy=3~$uhOOa^`A(iKlS-dd)_C}1fRN`kb!dpC5F9? zlq18~|G{Cc9c*GO;7Eu(tV<}D1>4>{*AF|`dg(Itj-J<^Uh{Y|>3PZip|J`SG0-kiHWi&6C0i~aLcsN*6P4UjwXsOgX?>wu zpHn^sq?~afQ$L%0-kT#^5Qll!ZZf|7WmcpuiFCK=@3=p>r5Sn#CaPMW&q_VP)1n$r z1z2z19@?}Aw!L6f@FVl8e)~iboTVUGQl_%S7#aAEZJuevW6$0%Ohpq5T`J5ZRM;0)MN5Mb~BT{m1XB7Z66 zD~kg23ZL*V4||26g2LFMP;+I{w)RB6r+O!Mwog%mMGW@Xv4wJxtYz?s)OZ`g61gN7 zuy?da<_yS%P^FQ1>9C}SliOPHunnA-@i6KwrnpZ7*~rT8GZVoZZhaH#j;zj7m2;ed zmRk9`V8g7}U6_owtxpDH24RkT8LYeSW+4K;JqS61yG-9CcgT?i!SX?*aq9bOeruH% z8@RlBSB>7BFkl=C;yyte#FnJfkI=??zRkpL9L?B5X(>WZ5BY*N_S)5B3HS{{i}vFX zX}z%LRFB5A=p9H$?+Yz8~&`pcjP0pZfO=-1oi?bWe!j2|bxkI(iSn z0)23Np5c5sgFI?G57*yf2}|vfwdYZ3_`Ozl)c7D1Tn*e+`IMjNBn%x|AZjQsP#EyN zc%2SL62Gbuab%10`fQZKN5l}I6_nUm?ral2({v9D0h1&|@}=q6UfC9oym`(548r@u zCRox(0TR889rZA?at#kgvqtjMff=)9@ijfR!(Me81i5>I`zIquRE1CNbqQ&>eD98%=%^ zw6y*9^^_Y7o*XJEn18MMKGeK3pcxH4y(@|Du>ba$zn#%okA|O#6{}mYU_t<*>h~*k z?K6fi;F#WyH*eeZx#g>-!@zjyPZ=T$V2aZNXPFd|8c2hRxV9Tm|jPwDMEPl zv#h0Tp|jiM>yps7k|QTBC?sg3-KYi6t6{`%Y~3&Ey^G6xq3{Sylej0WL1ZqeZ$vhC zg5e#6-Ogo8*gvsT4{iN_>(mKs<9?7;pDH5r_OD3H04Xw&4dPEYwQCI$9FoW;mdKO` z&c|C*G09+!P@NjR?tUQ@wNJDMzMCvNkw*V=5@sw^rH}etK9!Up;FphLgIh-;+2H@b z%a^-x)4zCBNTqz>4MH<-6<|U_U1odHMi{q`+MaDrR!lOfh$XT*)GvNuiR-xse7y^B zToTe5TRb&grk1*+_vpW(n9F!9^ofx`jL8i64hyp+bdPTH!R4-jj_{`EYV{Q02qIqO zEd99xC)Vw@oLbfi)6`PVV6pWVu>U}`@$a%S<*r+aD2`kxE&v9Z_+O+AOhGu%8ab!R z3J&;AnhiqtLQqpnEMnz$9KJ_?1a^FM!AZMMvwg#H0jGx$@*QJj#z>tjF7f30BOX5{ z8g-`1jeb*`Okz(_lm7yQ1ca$>alChOOB}8uyY)rPoo=4s*x_w0AA~uM3W(t~xGcE} z^FRb|ENuj`2x*qSd&xx4sMG!q(<$pwT>b2QiR0gE4?ePJ#9i!k+O>|J<*d1b^T4lmIIr@{%u*tfkzLgRqs6gbE>jbZ4_d6 z9P~TSwo$dL|mPmukrspv-Pcif&Tt7>|Rp{@X#QRJKzyWB;kM=et_(v^L5Q z@&0KW_Et8>=VAsD9kno&D(m)+79$Py&dJnxK$r0hzNhk5fK~(HHnJd2(K%dMXWYBL zSe(=%k7}Qk~&+8O`m`I&V1*~h2^=o_6F@?DJ?|kDo;~$ zWLie~q`!S2!?B2U28c6{k|mRfg3YRfLD=w#D~Bnr?rb&X=JVWT zV)G@Ul3hloDb>zY2Ym+4`u8wGWj8=$<@tXhxy$f8bCN!$)33c*ABXk$G(ENCg)Y-X z`s%lAquI#4112v-5R9qcR0RmWzWSFBPlG*`G8meFh}HO>6N3v5;-3+v>gbATX|wWg z{0)XRsJ0H(&qe`|L(>y^D<;gno+Z`z)MER#+S~WjrJJ+$qsyi>9DcxIzGw}9_qP}m zz7Z)2PU6I7U{hPrf_607jAE~v)DQTpB9QjasRIk5O^U`%Z6>iemBWcsw_VX!3*Jtr z$y-oj_);vKrKHw0fHiz%oX01bEZuk&XcC$w6Hh(*;N6Ah(&U*V zKKb5dyTkWKmA^PA2Lntb1eRqq0Ocjim?dsn-GT|6PvSx$sz@T7_Le~%wsw|D{VOjSpXPv8^k(?Q=?ZB9}Eg1`V2H%5}IfqVS zEr*VWFRPqIU|2+tBYC7$&M>y?y<($`CVc`rs#H+gcemWHba)NgVIa`n*?IjIy#h zUY+5^JE`2B2sGtMFJF~@lsA?lNp|!C{}US+Nkh@he)!%*>IQ3S&FAB;;-y_u42Ymw z-AFo);xXIaduFoLw{x*#)6D7SlWZn)$H#uaLsSJZQ9M>K{%H=}8x*+7(Apb4zdl_$ z+j;Y@ugZE1DfE^-dWom;-JH*f-99jm>ZHgAWk($ZeG@W9l0Lj2@_$8f6a+y*7@Ku# zaoJu?*Vg9isRa!8a|?l^4{5sN@7S&Hs5RoC9lhPE0@b7U;d)eWtRwz7^qW3xo_K5s zswGf}1Zqpc3-p}C^)J7-zkk5xM53OYLK{*7x)Zjqa1e@OS1#9QL+_k=nexiUHTA4j zqiuQGIT@dmIHTff-;OZfN+>Oc<$LWxK~3m)5`udUzaEj7%Ex9-+>h7T`#Y9pCbZ6d80!)FwF^ZM*=*jS96n#Qxb7M+{1>xAYSSx(i%*ea&J`SC!($h62A1(K5l8j zzT3-U(oM6FzqL?{{k*nJ!T6Dh)Xbp-$N(gPlR7>;kToMRyZ+<^Z)7>QnE zx9BlI)j!NNJxW#++s+AZb66jGDPflkEMQ5gvW!e)htlcxbS0UXueZ=7_2*YimRvrP zOa3+sy}lrQniVH39Y-XNBX;T@eH!R5ZoxIO2IZ4Gnv@f40a{J>yA*b3fAR%c`x80` z6adHhvC;`Cvz4npK8C9eDnguovU*6>>Hkaf+gqZ^B0$}GBgQ{bT*DZKP8$rHyZZC? z?A^`oO}WED8z1{inTTvNuBKte4o^1(+88HNr2OFzD-cN8y1l#MD$*mr`pKDfBRzGE zTXv};Fu#;$FoOzDX;Ggf87>MfOc?oR1b8EpuTY?5xio%P;i@+j)C561ZTSF9X@dQv z16y$=PK`0K&-Uvtw>Y`n1es>B7+P;yL5|x%xQ9w$% zLr}0tX=y2Gq#Hp(ln|v;L_)elx*MdsrCYk+x!BM1e&6`MKe)#pW8Y(6>sr@3&vVY> z_#Jb7h{fJRQQno%mgIE#By{%1mNPH6Bth8lz}714E=T$ISSb(k_=E- zcv7p~2nVMq$0QgI>f-6^lT_;6X*SkIwLXEyq;=m(;9H?|tx49Q6&fk8)jKKr1&6Ee zquOBRAS&7ogV zdNGu{OA|O$BobMLCG-xzVxwBpo%{KJ9pOi4I9Heo*gM{=PH8SVduNX!@>#g~o7a-< z?_|e>IBI3^3~Xhd>G7EW0He^ipUj4L1Urw6gM&kF^;E+^L<(LKw4k@R%$K7`Pn;UZ zpAV;al6qH^W=nc>CNU+HewKNn?|4>ebrx|er`ZzUG{Gm!-k0sYuD1Jaq#T~A>npzfO)+U0V}3Z&?Oxnd?R31m%%TwWWRPh-GiCk7XO(bvw#Wg6 zak={iX(b(9oXrj-!9Qh~p1isRa+B%+Q5&;HY3}3p zFFk3I1-UGQ?I@z&^QK7;lhg>Y{5Z~VK%MJjF2mZmke;)9cenqfwynP6gU;BHt(kF5 zoPwFR>?%l4hD4cOFb)2T;)5i^>Sb7h=wcr?F;wkci#!X16&U2!EjKEc2Ueln(JizP z{`PUE!NVR6BZ#AIIg>@b1L|Vv7yayt(stdCy(P~QK}Tz$+cvS9e|jsYJVks8H+SgQ z)^Ng1ZjPOWxjM9+v45~s=C{Gf;r8!IECqXS35Oby%@4l>ZIREe8#cK7Z_Cl$Q!JPw0!feLHH8Gaff9Lg z9-*`4TU-!Qcuzn%Z~FKP6?YX}CtLVbcDxTSlIySlWV6qDDj8B?t{a63>y1?zWcd_Z z?y5AB>_1>yoce_eUoCMj*>>(N?op0k*TOwxn&wVe9v>|ZZNQci@H6xT_31Y>0$@2CW zb)$@gSiz0T$pIfv>0L?BZRyyyxcEe=l||45D>0}`$tDk_TY^`YZkAjHnWfMxj*Vmt z%#3KbmtsYdWNEW{eBpXGhoT$c8)D1cNqm)(e)5Y8+)3~2&I0r;OJTR#ymg;dY8g%Z zwlls+e+CCkUS|U|)Lz7Awu|fdq)>J!|1wEP`)HOaSVhn+I__xBFBeO+mppt-oV%kg zP?XQo{^0!$o5a^Dxp5f&VH`M}ukItd$%GXYy+OYiw)z$52${!f1ES6s2Z{Pq*a^X? zD_}`dF=4P7P*Tb3lM!S$XbZK^d@30Q75C_OY7QuL+3`P+qjkF1Uys*J{^xRI)ig{9P;mJ{&t z=f4%JMwdGuQ%XZ9u$U5jk8=E;=6IutK)M3C+la^lwNn0FkTIRxetw2c4umh{Fmu#; z1olo8JnEO?B_a`r!UygoT>QnibbKs0csEJTc-kvb=c#OtipmNK1)~8x0uuVPcpND12xSr4_4au&?Z2Oxg&x?vZ(8S5e9u`&FVV$*Xj z7Ff!h)@0%Sx<$&BzUipnUGL*ASkni|fl%za067BnngsdgFoKJX0z0_xd zXt=awCvF_a`>9lto;zKkJo}cm*!DIRY84Wd2ZY{NxV6WKef5TUBw2^7HO3-(@59(D zMBJnVc}5=`UGcr|p~xp4O=F3+j2Iw6bY~C3nn5GdtK_mPvcJ+mEwK?^sqEmVEMVjOL_y3@$1U!qa`N<;n3nXF80UX`5 zNrrkvP<)w=bc?omdU+qNrbU#G78``|HF11nRi%Y&2;nO40r8piJp;R!f$ni&J|MS)({OSb;Q$La=Di>)GC9 z7!bAne0l3L6*wgUul&a%>?iD0;++kdGU0L(r2(p|1C z%r0DI>huhq)4@N&#N&*V{~Eip^AxP1&_&!by!ww5b%^G0lOEBp(qSRN3zk=*pBv!l zguNo}7g$4j(1aCqi^LRk34G4Tsfspe56^=dD8=ImkMaW}-CLNeOlH~|q{4S1NBT+~ zm9)ukT=^lwq2ht6<(m1UqqO;<`hraBK$}f3 zxGO8CFSayh=z2xlFn&76z3f*h)cxD21Y=Sae{bz{Xk4r3!1mjPl+HI+a1qrH2&ca7 zzk9=Ia2pmm6CIZ&DeR_JQgwIKw_*88W;8H)$5>XC#jSpk&*aN}Xq$oUq^zWYTC;;M-!Ry0)nb*{P;q=33HR5F zG2_f@(CdDhG~jZwDn$(!Cv5PfsdVL5>8|Zn%#jCO!5=gyQ5{ZEM68VZ*X)@o zEST+wLie*JUgPnC<=(N?@hU{;83UnW;T}`qx67IY_D==O{xt`^NdC_#CCjQy7~WzZ zZxj?g*S|-xzp@Xy;asSKjBfSWzTR?gGRo-!Z}rUnn5AX=to|;;JoAFIxlp6#@ANwF zH?*N@75P%v(;mdNL=qjso~}FK)s)vdCgvp3|K}jwvR+=)YnxNBq$!gu`xUs04?^X& zqio-Gx<4MeZ##j=1_hLaP%;l75|S0p^RbBkTdY2XdvP=$vE$2I;rS-71vJE`=C^w^ z3k>n64x4yKiyx6w0oF4}2(UwU=2AUJVk(ieLAuM8?wkSA(3VKszLBklqQId7tt;&` zo{-5qh{bZLpt2Xpw^?n!*?y(Z_|kj(Qt0+;?bj`?z>wT9TG+1?VM_vG1v|x9cO+{O z+V7v7H`8mxx%0y1-$Hi+Dl4n#$w;?VY*VZL#o57P)yanG33_-z zT>wJPkllI5C)gs0WoyN66_8c$F=ei7vIedf`f_;E%%0#F=GSzUxcfQn-O^1nKdEPb zBQo?I_K!H&KbHGaci@OGqJ)QJY{Y)dykzNz{_X?((Ay+fuQu%l-Uc7yf%QfnGgygI zEl7Uqnd;+6xxos7{?l!Q!2X!0K{Sy`=u+pM9#oVdN@cyHFT z<6wMTp7@nFyu9XGhfen&suRVAw>9p3c^0SK0CG(ZM$n2w^Ga?MTl-Y>Sbn4G!~(B= z8i@0`AD>xgGYh(A(P$1I2@WwNJ<`3s9^Xsl#y)^{wf>7Sct9Ncj@+exiB!uA-ERqoC$ZXqF&?wd%bO*1AeFLN3QY6MoZvvSii236o87+ zT*rZ59IvR~)0TGEP`c54g%g~eyLykv>cVI|jW&%bV=5mqm*MUUk&{eee_NYtZ@(QzGg^t#j;&a??{F4CjE4~4>*WhaM^#Icc7e@k4T$B>!WIhYm7!}TZGJf1P zt-icJxX8Zx2QE(-1W33&P%8<6?C@9n;+WK7!jAM|)!|+3lhL8kG7)kKoFM1`17rM2 z2bFoHw7r0>I5CxwEQ_hWLU5M7?c5YEf1A@K;q6H;Zg9<*JGSAewC@*<2T5?2{y&C^ zSe7K&QtP3W8G<7CEHZ|+dX=uf1k{Ft)*e;idU{SkfB^hz(cGr0W!Cr0G=kzBCZkj; zSCrt$FR-3}F_^76*2Ue%Am5?Z5j7rpEB|{5O*6;xExwuXRS~A+!fIvx{@(Tjm@E$R-5mBw!|Ij;K^VIpYQ(KKF=xKlO_=v{VW0mL zr8qZeI~R>nJf{=MuGbECkV6j&h3K=krEg?yv5vF;ryCB{ru^>9$r0AG{`3|-60J*$ zZE8{!>NtP!O?+dc`xiaJW`T@?gg~&%*Az0TnGe%v?!c zt@;UvsY(e@1{8pd>f&WpOwc6W`!eDTyRN)8d5HYdk>AYMzW1K=>b_J;&6#SbesTD` z?!@~S3~Sc5^eX)Mz=ga@n(6?fT>2YS2Wd+S+<{c2ZH~Z5na}*kNWBG8VtD-}{LqpK z4RR^U88c2=?eB){el7X?n0d|C_;Xu66-*dX#DtNUZ-sy975Y!sn2^7SW24oyC?B-NrPJSVK$f`dA()Vj9RT8EjeMez=I7jj8}E8`v)+|GX0 zMBuhkb)16VY(JbUYNQUoL*a8uf4BV+Bb%i} zzkkyo2&`M~_@P+M1@c;NRvuVS*bNn#dvZ7vtu6f&uz3?Q?`9|dedSn+iU>H%fEEV% z)eoP8gBjlpj_nt1b#$^_$SpDINjbi#M z-*Xd349p7%-xq#PL>_`l!|EZcc%xvlqY`91opHS3gU40_Pp2C`>n_AosV{ttD0O?z zn*(yje>F-2)R1TIzbn^wG*1oVM27ntP#kL6=xNIWu~6GJkAn90{3vb2@;68V7T4iz zbL1FsJT-nMB{-od8IhFboflQHWi|}3)UaaNSWn%+=!jCBZJn2={R16^564|vd9pes z8lR^*W|T2PG|H?feV+AIm>$P$70VtvCyxb7x_W8~Yr38)f#afN9*N<^6l@%cuDgSu z2kRMX+`1PSL~VHOU_b@xfj^8`#f#P~!um*cA6uh%kjQ7|=GpQw39WLc-I5A!Q#fN%76V@2~Hl4@wQ% zSd$c4+c3-xxYe;y?ni5l*0++r7AKbl4if<68hk)Sc)?$4##-GFH!h`{fH^vJINj0;ryzzVSR|G zoN6wABfJqbNrx`t&sEh?I>6n8)8?>5!hccxy(h_vm2yRFhe}oMQaVmx1K2{24mTD` zkQC=YjXR05k>JmRbL-8Pm;tX_bUtm)Te~K>R#SN}8FT*dQv<^_4I(pcR#4C$Z+-ak zYYx-g7|fuMkh%R$2_?4Gd3r!hb7!#~=XhrlU)ESpd*jwB=cIKq=8fclR(uLFWhHl`Gz3;PnXl05dANWW*WfmKV4Qp^kvl zBrK}ns#Q#okHsT0Z?Y6dD}%o;@eG`uonJ?L`RKNQv2!%B>0Z)EN|&Vaz=+fG1@G2f zl$RpHo$M4zTQi}P%f1kwD+==?FRz^~*O}r>JZMdOy`VWH zo|mfEPC0P%G5OwPi`NX$DOzi)YXITxu$gI6+{>dRtp9l2g10bG)JcmQ>y3~oFCv6U z#+v_}c?F>QC(I(9+;Wj|G!O`3M>~sptGM!7Uf}e&Ahc`kXSWL1u6xDts{bEtIkx}x}IqYSBseBOc+Q1cdDI5Tv8lhm4R5DvIM_Oao>?lA{xRA6T{2nh3-VWf}2t433H0KI->qF4h$#SX30_!ZVb+bj`7`{LU2q z!I=P#zO$i&MVy|Gg7+u{o5mtIYB^Y}m4kk3TMB6H*`kHhL5F#pAp&Zg+?}k%fZ~S+ zewqx^2M63#3UDlgpa{$>Ll04#hSPi)#TiAgz)D(Y6&X1NaE7tw7LnjfOWS%16r{ep zkpcw|x$T(4Oj8bz)|kZbaait_vg46pA{Y6_ktp98W8{xXJ@Xl&#KCbi8Necw-jb?| zlPf|0guAUIiTJ`6%*C62hwkqUjMuDF`OAcgAo!-9al=>l<=9nYzz2HJ>B#Q`8j%z% z@_Sjjp6x1@xfGRa{+8SQZ~4YA&7!#yS&>+;o|yUc*y>9v;7PmK?I(})P=A20I#osxsd16 zRrv8<-1@u@<`Ug7!qD2m$xJ9nq7HP;i+lT_N5jn`O>jN!SFk8^XND;zw=iEM-`sTD zbaC44c{-N=h}`X8vA=O$roTjZ<|o$NK_y{22k!Xm%qt)qK5Isdt+}mk+*{4DH_gs) z9FHZ3&z>xeV4k0U^L(^0Po=&R$ql)T*#<;WfXzG0d7xog>LxpmL>kW&VsynJzPrXH z00(hv^{iKG)I$ic+_9`i1|+ zAuL}dt)2VWDLKEmw%Yv*(ZqlMet&(LZ0dt(RW<*YR@wLD<@H|bx|@BvU6(dzPHh3 z7tzU&pgd5i`WNOpOPDb2L#j1wwFdt?jU=;koCh*S^ZCdt!GAVS;fmj4)#wRc_3Mbe zuIcS_N2vS-FY#Tf8ReOS)cVH}TtQ(eb^Q^@Zk0e#<2|x zl0p=huEWb{(+5rD26sf|j-OTAe2+5SGG+b8rmqB`MG{iB*K)kJya(k8=cjGYa5z+e zykAXEl`?ElYKOvDfD`x)##IBNXKN2Q;Tou&m+oX&pF2~#tg)lmj~dfo6NV{YW8We& zmsD*RDQK#bGm<`Mf;|R43N$6fuMdPY4tX4Bv;*}BOMEnLKr|%h>>@QsRUTMxCu8yDnhTQHcIBafvEv);mOhdnlK~;}Ikr=pq{i z><2vYIG})B-#h19%dJQLP*f|Oi%@~2y@WYi)OvQ4!_ImLy_N|vK?ITZc{a8yf?v&l zOZlM%WlS+Ax=6*ACEwcW)~w#v-@UD_>YBnhfnr7SyO1bR`Rs0Qcq)-u7!2MWL@xH} zJ_Bop8c%VL2Q_>@Zzn5^qiXZUp-4({g6z$Do?0%@L_c`1MBGbyG`pW{>9(q_Vf{QQ zp=P_8ru%Q}w|Trx17H(Uu$;^>=Yx2@0h(P&Xo zE{`h-l!dN5btR22Cx|bT@RTCCFQd~7XYp(b^HE~(YWXD%%6HAT?|4lv5z-0>6CMhx zDg&CyemOgY{=(%M*+cmc#%++c0A)zqL-_Jf!v^1v#+@(WxIYz<%;G-D*w(VSiSITN zp>lT{Sv&k!8jMaa$4qErN)u)!1+kcX` z{0JT`aR*hdT~&2t(y7@dt@&8 zX=Di3(cBr#k*nmr3}so_?L=e4K7oYdn%?-iKU=~g`>p-u2J?2G;Jeu;;mm5NHAO>O z?a)TyJRQq85D!t#GjXdX<6%PXg6U@C(Je>C=V;bE8A*^QD+G zim-lyYV#qky^(qd;1ML$$Rfq@@4hcbGo=k4eVpyh9FMcr<@NRXt$G5i>GP9Kqw~`v zbM@~5S{Ti53}tr;lRvF;8vTQ_Vugt|-^t1Da1Lw6a_TK5C-d+b`r*)g&(dni+0FA) zYz7&xzHIMafOS=RqexWQNsoXB!^X&XFSd%Gj}R;W>#!BGIU)b%|Hr#ZRyD{iz~}^O zn&Ury!%mBFW#`AM%NrY*I!O7s^?}B04Ao$lao+3_e8Wr)`_i$Q z=Y!n}FcX!`9oA4tV?~4X<_VcG@0V*2=J>7|#n~yhZwGsv&Z*mqao7`4;kI+-;%z-v zt+Iz{`G;bJk;+TYb6O1ZtgmRex^hVySI*vx+_OF$G5|5bt=s#hjE_p(6+hP-0fVV0 zU*%=kaV9W#(tDJ-&nN}6bx2<`>b1pJP4!+zl#nPQyi?e|j^w&Ajo{F&Hpe{y-RnA$ zD}i4da;4cm(s|?k0DW{Biq-e@39etE^o*Ksk03zx1WY?yN|)4#7QWu)#dZ+5(spO1;<(XZSoIKj@HxMMXUIK8Ls<2E_; zE37TW8f=TY+c<`?hZO3@2~f=tcP6SKiJkvxVMGWnTbM|QPri(=Az}z^MWMGh)%vKC zLtjCU;%lsf;5Kb!ko*c^We+_9-l7Sd_$w(=QFXh^ee9UR#+-PMkwDKXjJBmnFk1gi z?S574y2aaF+?5Bk|Gu8B;vCkW)Y2%DRCZSVDWMEMC%kqpMbxFScZ2UZHFuSrNJ- zZIC1Nz}Pt)MTZ183#J=|aTtT(e97;5|D0~jQr127Ml>3K5aXqr#d&YziQ`Q?Y`Gd% zYW!{>U5V0R{N1|7=KwJzYw=f-wr5dU1*DhwSGz=@Gze8I%QieYr!5jG-R)m^)WoLK z{cXB+_4XEM9Wy-{KRhP)R4_Pb;}8PB_EYthKJ*mC8mWioMx~UEvYkh7>^YctJPi;j z-CBVXx=9LzXV@dWkUfIRfpSRGK@-q9JvnwGq@D3H6|;1LkpoGhb>h-GH%A;ZNa`M5 z`+(F11-Q86zgbx-m5X5N%8oBlaKtyshyHdzc}QQ;vJBrufP&dAs?BDtr8#9w~@ zHLN}^2f>>x4}3*%Qkln^3SW1RWEU?abKG>k>ys@q#$gRWTePT$i1uL}Y3XWq`LKD( zgjMXqSt`v@%hTdR@QNT5of2p&B&IPu=C|nwURKM8m&$0lfban0{nqm?ZEM}wOmE-! z@iD$ZVKl=H>cHB`W2LR%4{L~xYSvWhdKT#p?uLXkKM*(9+{ycWY;E9a@EUy8z3-E@ z8gL3CIpokp!Iat}v+2K?;p;Er#iKf`{yCW#L^=+K#hrYHp1Z`pjf zdMW%xPhLLe5KD@cuFd0-DsgeQgHA_JeD1CkB%&y0XsW$M6EJ4J<8F|9@jdRVdX`FmbW(n}47r1h6k^0uG)O*@h9Dwz`pJB%Zp;hDjrG@12_t;#Po z1Z*sE7lNIwq-kL>Iq!h}8Zt(@3Hdh+1v<4}_Suh{()I`=KLtG>!B^GvzvUpEzy^*m z=$rR;RncSpMXKs=^w=g>&0DoZB(1YVBwVpPrWrmd3}RL)&P5VRxK+5}DOt9! zYZ-HWxuu)a-NV@MV(2tpa2AkF1wRD}=)SBDP75(`a?x>?fP!LPiC=vqC}2d-&Wu*i zgI$?;nV_PL=xXVeM{<1rn*1m$?$5}4rIx$Q4;{dEyjMGFu$95fi^buK;S!53J3(fy z$v<;fwel+B<@`&=(U&Y}$Qw@Q>F@$zM2t*sr$|$m&(}cruMJCcJraFHRBj}F>W^*k zXn=!))&f`Idv{TQ4)mZX-6AK+P+@#-~l+%tfv--DvQGQ^; zz4TxE(nFH6;4YL%vE(i$nF)tq6NTkpaH`*c(=`v8lpd@-gPA%Xh?z~gY)&ARxgkV1 z#vpRVx}jEx^L~Ccy(3!nJCjk5_Q8W8H?6e{Zfd^|)1 zCsFRY>2yuO^uL2A-@;^$sfg%oO&WVyA@i1wUw~|(jTwI)%es(q)M4B?T<8tCH(ab{uxz9IAnfXk*5e{eVgFs0Mw| zEj)J}k1pm)K}G_YL+ACB#x1l@=Cd=waItjqtHkp1m>l=L4A)ilDHEiEfGbMjl~!L# zTEJux3v7uTJmES${gZanP`KWELN=h7Bg=^-=y>WaYIhioFX(!H?&KYZxTNGhQiQRQ zF)GOThS;$BfU?WI)bK$Sjub*6T$&JOYkJ8`1Od+|j~qr!l5v zlJSiT_VsheN^Z4UA>LY2+WK>UE8A43L{G3-WBEH|-C@>4Kq*qofU`@k@&L^nvixnW zC0Z*dd(h+v=H4Q2djM`LlsBw-uOvN_;DUq=_9q;)EvnD#k!~x9Z}zIlQLF4fr~z#t zIgqD{J$QLh zg<33#e(jv=bh(2e)@gI*z%OCT z7=d5(&UD!o8LhC;xCL-J5941>pG1bci#*3`M(;y3x0^`9E#v{5)v#WdR#(xcnY52^ z+}zwWtXuD!fiWCiaW6*c0jV2aGcl!eJL|k>Z+#Xf_r4~WNaUu<4?Wu_vAZYXLQCd! zX3TRpocNX$*zB+lJJogJpv0d-DYvuD47dYfz6p-MKdT^tpZDM7Fct<){t_0iKW_l6P!&1?p9+;SsCWUkJk(JYo_N#H_*rZD|i=)IlMoVDo{gDzE;_@o5s6`Rb|B zr5F@a4xy)*eMII63<9(j2*Uqc5dLGKO^mf0R71K)X7%ELBGVzBvjYCC*F~Serl4tl zSGo{w>i9S0=^>c4?G65fysHVcBT81xhSFwW^{Dp94(#{^Aesbua(wBvF5&Cp;}d*_ z^YCcRL{-<0F2XNZt6W}ZDeLVfibAh()d!nOJzqc6-~(}=$}=Pl3pn%JO0hvG%E0CU z!8?vnL4F!ig6Q>Jd9i~w#mJtk)b_rZt+gd|c+WAa>NM8Tc?6DPOOc3Cn}D@yUt1^!%mOfox2$tP{D^C<%2b z!|@&fG$4+XOpu#vj_z|)sbvRTm%%>0Gk}&YzWzUSGqx`1%UxuKsNcBVFRlM!{?D(I zkA6?|1)3W29idi@xpwWt|D~-3q@4h2Fj-*);&`zHBKlU$;9E|^c`z5QZlODvsfP4& ze*-wXo}CI8y$*bx^{#God_b^QD>*jMJW3Vw@D8&!g=Vfy!XHPD6j;SdTCS9=F1!_6 zRy*5qlc?<%6T{hsL&gXQbSmXImBps3Y&6J3>!)D0@f;n%KQ{EFq8E=xGv1OCx0!iC zCkJ%%&rdP=MCf;_D0KM!C3br0zz-_QIf_)zFn7Gpx{Wu6{^4!Y$!%bL+pmU_wRObs z29FdNmBixJvFW#dy&q$Dqg!YP51ItoqXv4B+C`BA{*B55Es=jA!C%_v`ObFx^gOzG ztB<5X^UE9KALD^ekFKWi^lOBV$4AA$?Y?3@hSQbLxKLRzldjp1`h5@b#N zv)64Mu$dQNJ|(8hdJ!oiD&?KQPrG+9! z#$oU$oDM{w8#&Nx3*%=WzqPr|X&&+RcdzKf_t*t9{i1b*9zJ7To+a9Ne(ujb1I&a# zqAdJMb+H3L)(pAt4Rsbm#odE&WW))iw?0r&v;i{6Q2}(2$u1Kul&jwqIfjOYp593u z8BK|1*TV#l-li`v&VJM%%vSpIcvq3`!|l14^Ne>#$dWW;YU+dWt zCum=Ny&!ZL14E)L<&b>-H@OGEUW|NE#GeCN*Pubs8F8Qxh?1ElSW9%xw7 z8TulSUZ85z1~&TwWTzjLSgXD`7lJgHbaTApEcQZ2RDs$BWot2*K@KlSOGHL+A*q|* z5vB2F)xQy6iQ}{L$%sJ;U02K1Sr?#9X2LD|6dkl<@y4pDsn6XMN45rczHefbF7feA z>sf83)&^96At6_W?G|y+dx8i$FGbe-I!b+cxytmrZg?*j+wXz_7^xkPM#d(& zpWH0vR`N_{w;^Fkn7uCk@R=Dp^H&L$#17cx2%dy-5Qv_#m1*dmJY$W}3l`p=2B>K? z^YbC>%w6s$>&?7X+xS7E=Z+g?i_}Pm1Ai5r$BWO35#frC$N3JkYESn@0X>_M^^mWe z;X6yU#DD-wrg(sbNyEuKu8w^S-_szvPrx=%A*?Hu-~Kz6SaISX43+ z@5ii4;A>-pj1E;w7jx6agwFt@q>9wT`&WKoW!ZO`VCy22Q~*LRG()W}yLE{&2RH6R zZYSV2e39c{FE?Em1&?Y8-2a4|i{(J{@2H;UyauUHtBwb9IA94>U7T&&{A;DR+!j^O zPg+uyq7Z#M+S}$XB&r|tJTSEi^etL(vN}M+HU85;QL%g{O4rji`H2GZ}5Fl!K%qjb7@yAo;?*|wA-&aoE4l+^knEUdHHL6CJcdbcG(rYX(_%f|j@JqJ7Uhd-7Ukr47HH?}1S?_ik!5v(W6-n_GFqFA|vE|^^2 zGxRKs$_y)LuvoL0x)&# zm3FoaGV=#G_-e_?PnO3IbPyE&scH@{6#-aY*8jG_9)wyQ1A-MJmPNh;S#pMal3jNx z^Y>oDZrz)vti_SU#zv(x2#Ja(Wg9&T9eM5oCpM<(igrK3nAIGyPHis+9~qwT)_AMQ zb52FM)Gn*kD)81!Rb6R5=eXsT^+*zeByy6#ntXv7bx`w0B}YEW_yHs8{&%njKtd=b z+1>Wh(9|Mv(mICFkPZmy0bAo>jSNc~Wz-^LvjNe-tn~$q#lTC8m>KP^#dum1-55Am z_71Gb+%3cm*&4m@LKDTP7JTsg&UsB-?%a(y^^ySmGPv*1GoxM(WKfUvGV!rmsxUI< z0FrN6h+fw;UR_B$iVHLtuP=WT*l1~+bN4<0Y(rTxhBKgk-t-l9M^P4;aCP1A)QPm3%F%6WhbpM1 zzS?i>9P8TA-L;)7+&f|Wxu4%(!7GzjDwvW&Qsi=Unr4vYy_Y$_cGJQPL#nT)Si0g4 zZ#pu3;lE&K?$P4h0Q_d;VDaj%M!%Hwg@)M+mvtIWFB$;+TEEfjkp*_G`Rc;`WBCE= zn+5Z(2OXbzj}SdX;57dhNIP21s#+ zw4~`cQj%W)!_#230q~IVOGq)J07;7ObmTN``vW*;f`TQ0;6)ePn=^`}eBQamqLx{7L^)czi_h!Bhl01D^l zBVvqS&@m6O1$af39{j9ab2Tl{p2{Lb7fJb*AbWQVrSClgCH{R;!RT^OKGnGi#2F+L zyk~19YD>ixSria3KhV@wo<%uH+c+Zmp!R|auf!ub<&oj>M(&yJ)^y`_N2|3QorUPdk!;?UNeb|*EHf*TxQ2@`0+CK{&6#`+Qdo1Y{<^mW))8- zZl!j-X7B=#u~96v&)+0>AZ6Sn;OI8%MML>x7UeU1GJPk|e0Gs&#|8*DLPgZqw5XJL#ihwMwJBj8O)ZcbSn0|LeYxI2RM z#wevlx60nsJrTb0gGK86zcg!z{;=EvI5BV>XPw}58$pSTat{EDE##N9P)*dESld?K0 z^!Fb$;3lTIV}8AZ&3guF0x}Hqy1DKv22P;@)q7+&+t7)TXpgIFazKV*brhQh18x21 ztk7*#anXic+bPD82(mU;_(kV|S-8LH*ep0&N*VGNx3A*Y#MY8E3dC!2*ZWx)WHw+D z+|p-bUCU~il~a*!3fxBxqD5NF>jan7D-6}=W9g(O>0AWY?P+^W($APzzo!abYWXVR zOI+@T?ZZJXUpV)e6MY7fx1QJ<(s8p=Z42?`m~z{dD-z7%Y!d^KSw;nTkZS)Lso zl{$X3(^c9M_^+n+Z6XUqPgkBrvf+w2Mxc_nvbOu5lfQs04$&GaW|piKY*8T4>g5fr z@hXjz(D}f~&1jPFK7lM~zm|dbMiEz0kJQ(Py+P!-C-`3y%~@KUDTH5MM76?LfMfs$ zy-<+$(i`UMn2`W}+ITYkLr-_TAaG9k8YpCgtRJ49lbOp3EWbKzKC(LDm$&O+UlcQb z)f~>6FF%`ZumbZ#Yq+GWl~?gq2UKz)ign)`nVG-{K>&5=)|C0m22G+8_41RIpj}6O zN`B|&Y8g`7S^Qq6%dR>$u^%yrfY`W-#=A!3k(W-61?)fa35#+>PGD7lAs%ekFJKB} z-SzV`ti$%y?-f6eDo0Kpxx4lYrkFBPx`^xojxWME`rEe72S-o;uhk1V%|6$T0r+U5 z^}F2FM-PyQUzE?GyO6HL5T-HAQp30muNGr6fOy>f_~Lhpo>rv{neWOnKOX2!&){*| z-Q7i?yh0n6yN~ox6&@J%s2r%N+g*v|VF*<#6%XUc_Xn}3Iu=7#W6V`(h)P<)d6zLQ z+gDh|OQouuU2S<-yY8BwgMRDX80PF(bi1_~o>WuSk4979lB#K{PuONI3|y^4>HC9k zeKSc8cuxx?vPE&n3H2L{P(?$`T;2DJgL)Zn@4bnH7=Gd%DI}$E2h_%$Zqe$v)$1eQ z*{-)qZFKdO zvPwJjPUem-szOn^9Gy={0f3kASs{0esP02=(QSz9fX&^l^p)iH)G->2{&eQ zc@-kTl=SK^AhYDc5-GNesy!;rdym7jesQ>b&AzQq%j|MJ`}7%?uyJlL(eSqP)|P?% zPM_N(fglb3kSpWpzjv2Am`tXs{tgnoix~nsW_!#ky$X?^@`i7=dE*$o8u@P#P{eAS z^4Df$j95kwBSRUov^nnH3n$+_IM~T{sQgUMX=wFF4C@{Iu>*WL3G)&ZSWUaL&D6ku z?)ur(vbs2=2--Gi$dn2N+Rv3X{i@xm&o`%`>RK$RYbfi{PsT2oE)JVm# z&iwgEQc?h9S}vsIk?c@i`~I31Z&%-yuUN0C;}lf|7VA9~h)z8xgdt>#Al{I}&nOG5 z&bW0ui-z5R(*Gh?U<>-ITa@|8y8ruzT&@blWRh_lUvfID@l-t+3GT#37mq7nY|ZAAtCi$k2Ng6{sw6U zfVAy?iu=;m1=<*|>)G*W0Z&1uqUKXc6>w`HN-5{BksMf}SKtEMA6Ca|pU#p}x*yI2 z(1^xw&o$e?h?lK`gtLHl*7D3a(@=H@ltVO?RFbG}kQ&jX1@h~&RR;xQgr8m^R? zYU6wsqw-{WksuMPLibHpaN8hZ(D0X*3Hjxo>Og{DjGT1z^gO+t-vIJY9 zH$xZQ4Fv|%xx2{%o#pCf5 zy?D~==yy_nO;W@y{Kf6}3vh5i=4rh{3L1TMxZO^B8QPr@RlE1oKYSg5fH*)}#K=23 zN(|m{*b`&*Zd6cdQf6j9AtmT*#?OwIPY%Fy+)vml7?MoN#=_z_!iHS@pA#;j^ToG+ z_l!N>)93h!#$jW*F{X#h-=%Br^t@-^`?#!xec_lz)H6)B7Q@naU7LXB zH&#=(*~wRlQC5qSo1nG~9wLn0f75MXrj^nB8+Shxvf{uQK5q+~Mn6PvG>1%1j#S+i zjWI1f&BbFYQzhpAP*c3-yOjTG#Go;{34|1)-pYy`-6Pesy#cBL8H%OH$r%69-)|4- z*5-&uG;oT2bZavG?}r}@V0)&o>P68B-}i%QE5Au|&CJ8pgpY-S_{C5NwD5*J*m1Nl zWB3Rb)<^@(t_clq)^FwW0*ngOFyFrG@Jt|;TJf`|po9PVE|=2xNf{$SFcmFm1egG32w9usAzXWlB;Kf z+g~SIl8eN}+W#aX6H^CzEKcW7kOXR6v9>kq`Q+}yq1U-XP@f=*{c^(ssYfF8e#}9{ zg7d()zUo@==@s`KWf&Q>72R!;{xv`tLO{m#P&s@_xSXRVnTTRK$U}w82>;E?@rOvaK~_Q{AP4R3=|gU;j(VpM*#->cNK;mMrF-{N=eQ-m-=d zXkwjplN=|Vn}1M~E1^KLoboR3!tfQ^i?l%*=676jkX!Pkt-?)yZgo_ybIQy&M+bQe zdS#YgC-4k3q3e{B8rA}=7Dn537ztj*HsS8@rcn2%c2z6(-1L!d)`T%qI*b3H7dtwF z4bk8p3=vta5+`phY>-`yGKz04soG-^;tu_BAJ1M&T{tr1G=_YVVRe!= znWTEi`9YY~knCF=ePB%|WW5(R{GeA5mi6pAN0-&YQgI`?c6zVkL;!<>qd1DLVV4CC zP_vdOewdhRow>3+1G99%)w?WEREBthnc47Yi(gB^xT$(1@fLN{rET10vvS;VF7T3z zh3KfQ9e2d3_Pa)6b=P+shz1>w9vKPh- zpCnakHY;MPn2G5bOxCVqUm>?y5N30iG#X_2$}NNKJNdUm?!Z6T z^hy35_R!_!H{>unBR4z7aOJ__&pOBiLeH6Jli2VVjzMm)dNijA;>*4rWiEzy2EfFQ`@69r#s2>@ z^xw~%PDGSqr^A&RQqpG&6s&;p8PO{eIod%34MR)IwP;oTy#IU;rh5zLi^ zZS`K(e`$Ty@Wy}h?Sgr9H*T*yKw~ri&e23ri;D`KPN}$U$ZL?ga{8#p2iTC9IAB$U?}~ zGrqcy@emFZe3?6ULVJt^VcxX%dj}owBM1qV@shxhN6a1W`Y;VYuE{2qk|GXPY z=2{M?o_I*vw{l0vaCOfU&9(DeK7M1Hd73E219;)1ewCD%jsFR4d7UquKNC{}C;oq5KLFJq zQ%*Kkh;c`(#QQN@W?Qtn+YM}XmP{l4ME4PmbCJc;2{+t8mkhHnRkk@lbJ*j_XyOvg zRp@=oaW=k!Gyl6gwiWbFlYK#P3=v2)9`>})#P0wiy0M&lAUN&wbh?L0HhNA+=qU(6!H05gL3p={ojyv|Lz}MwaX!WSzujxl`g;h{sJZ<@Ie8n z=~jHdJetv<>U91gA~*blJny@H`KRyTvFl6P*z1LoYJdyX<$p2~3o;htI?OQUCB$fk z%BnMU#>X!vIEH7<8n0sOVd*AnBp*SL2&tAUk^2tG@P^%1qRV%qm>_0#{f7M5wn`!-P=ekX#yP%^K6_Dozj*heH=?S)%kEKXQkB@$5M`+D*F_89-Y_Za(N z9j$fnte5Ax?=8eMlyU-Bxz8#yueK^DyDfhqKPN7kVc)!1s6m?%2ZmoEx;KLo{=xdHUP#u*sbp zo$s!hpHpD|cw?Lz+4#}AxNaw)1BoP8S9SIkbBHf9-#gb=>6FNlNf${U$NQ@zurwR9 zhd1~hR7Kz+6bDXMB&NTKY6^4N&G>kUE5E; z)N|w7P;C2O5w52=)_sfVg{z}H-$D1t6Ktg2FN0gL8O@aXagk9D9YlEJBdLIzk{5+0tA|lU}v=rFB8LK+HD=S!0aztB_-S`!5qQrcjHUnjaMzQDjJrOZXfA=fB?t;7Bp$se( z47JDNN)PP^$CU!$PZB}n_0AP09UU)M2S8ZoF*BR!Up;{q!<7N1by|5oSs|3KxOpaOv!dpyObjAOSP{;vC}N6#AM%Z_w$6f_TbguCHv2ouiMXwB-*alTvyG$ zwzzT{k1jRL1z#9auykukyw!jr^Bsx(PA)P5MHt_oVrM5Ohu{SzZz>MkPcto~egLTj zt(x=3J>0KokhA$&->Tz09i4J+bbiD z4@CRmlW2lX-AGJp;6wPKgl8)iJ#3KDLSP#%8HSg0mW?KWr2U}fP2oF9=X(tT)?{OQ zFIXzYCzXhSHO?(teDzg_#27!X4WWyc5m7(Zx8 zW0`b;bqTtKt*N(MKZgq0-cL5e$p_IfmxqDcUH)U8Y6oU;2EP)dy?UkKNwE|a2{j64hRu;5?rskiI*!zhCfe*6#F90YaiXo;M3|XaYN9UD$nt zbMTw4Iba(UJGKnHK6N#|uPLaNY~s$TzOtH2o7cq=S$*%eZ7`PiOR9kndOr2biL>w` z4u%)4J#smG9(SJ%R?680em`cf0bE}A9Ir%gI6Nb`<0f{GvE7gU7p{oxwBh5OEpfV0 zXS<=RBH{D*$wTG-@GEFR?coq;RJ?kn>hP<~1QT@m>V>dsHV|TXH%r|Nr`$J|Ew3JA zyDtdh0uA_$A6-X6UH={~gzc>AT_gZgryAMu7yOYR!{cQjbt!I;#~RX338Lb1eoYo8 z(t!Uy7wA7$S8#3oU|^E$^|FHsW6k!yids_xhtKKN`)jLQj!!GMeiUu^Wruasz6ywY z;&^-DiWEE)vReUL(>N<{Q^I9GV_N)vvjBd1*wR3Ug`z-$9zO@tqXMW-!W;>?B7QkS3E!PBo4iC42DqWJ+V^^u5dWA*z;&`+Iq-AaKrtls0 zf~|nFAWz8-Io^Sb|9Q!5k7cX!-^s|d@L_SZ`0xE zNXtF%K5%us_ry8i4veFl#A79tmd+h0*2&TB*@sfF3kuEOwe981$jay3qKHcO2&tNfQ)B;e^cDrddJN#`DNaKw^ka8 z>9LLNpIC!&aohPxZldLNK_GyKkfkZC~Z+avJ(5;9Micoy>m zk|$m`%`|fg94sKwSzNM2U>>7-PQkldRw_*$taAYCfCmxmf!y=RrZD2JjAkgOPIVMu zCGCSbq>Zx;do5PTN{m(GxqRbAe7q@P@^G%uCu!tOOxu)m6$bFIMIX-{A^6%fxFNu|-?(iojncC%hQOD$Zw(b0u!TWs( zn>@3{PmwtF553s_{qcOA7|5mz*0WM(Fn=&Po6dkRpi8qxIgytU>$=ghrZ`1kJ}964 zkN5BX*I_Qh0781;vykb!yaVxiIpXk}$&VsFZ@G!DT((L-KUHWb@BPV>G$~&Q<`;( zrk8~8JKhrm@C`$WEAk$X)}`hA|MqLVK;{dz$tV4vj*aW8w3MO4gw4Jn7{ZedQ6~^y z;}Qh`(Kpkcglp|;g}OaR!IPX`L^u5ftb8IUcObB5|a_z3-hC|uGFB=Rg>vnsGcRv9!C{%}Jb9TZ@lpT9@MUL2)d%zyU5H|$LkTmugk z%7ed+XjWyzYDjXF`6Q|&3iM>9t!T~&xl?W8k|P8XK>#7y)BCJU+h7_y)PpQ zD%A(e{W0lH(vb!=qmpv&7anhhz8{obpw}rh-DPYU`ZR}JY+7uv^RUpXwp5zvzeXy% z{SzC979CoV!fvErJs=ncq(}~R!kMW!@>HyVF^f4~J8D9qoA{-NLwVBit}qO4HA+mk zeu@*=^-Gd%fin6z8|j;6;n~i~*>flAry}&}XMmWh?VO(K#z9Gjq!YmFN4W~Rc9xAr)e{=IC?Ylf|WOf-cct&LUZN`7vG3Same0PE) zOR@>Z3m|r8Tz{ND#$@3{ye$R-C{*FyDBAFW0n|qW@%aDgZ!$mnkH0BA6?8H=3zU~Y z^}lByA$ZWpsQx(v-h5y~^9Q}al)KcjthC6{JAwNgnru9eAHb@N@Fwc@$^9QwnAaHgrp>*e%A91^qVb@x z=CiS7;`LA2<)|jIImCgq!97@*JqB9VDQEwxh(aI(%h>|i-^7aMnXD$Q3xYQ5;TgW* zXJ+@oJ4B&Y8jNGY|Hv>yR?^EE8MTKDz`=}*Y2&!GuCfZ~EnMc{a1&+*{O7ss;S$-| zEA;xL;B`E>t{wI)4H!FRf8wI1-||Ig+l~50_!v=CdUinM#%eCd0*+DkX8*TsTr>n)y?0$7oEtzhQgaM+G)mE3Yn?CI4 z_?B6oiFnad2uAxsaUOG17!Sjty@1C{Dy*);G-wVW&si?4zblUaJnug)J?~XKpcIJU z1F2}PY96xLo~R-XH^>JpUk5Ii^$@<&1AmnAi@t&$Sm?Tr=J#f@`kn+kEQmBLmdh z_2quG3^9-E=N{#n1v8B^wg_GoCfi$M?21 zCECi7I;ArWP(6Nu1cq+ID_)K}#h;(|j}#LBSF7}0ngZ#+1=RFytR~#1e!)k`S*IWr z*MBxPmO$P+5C53E0$s$9XW&LFY|A=*@(jDy9@szLDJJ>y^?BwDf%6&h#^EhI1ovA+ z&{*8)NUq`{e#o79@5P`sRM4ldI*ucYNw(G@J+6p^N$yq@H8$;$NXJiAX$CBh2EJ z`rfJaPx}Y3%*NhDJIkJB6kvv!AyMckD^qvxNcR_$>%DZhiY*ALPs$8?wN^&6C1Qd~ zM_bQk@vFvFY4v2Xp2M~A?0cF1#NV!iMlk=1EH@Q~!PW0iFpEiKTIRNRnD~1=X}S`&SF<|&+(z6I~)!NVCh_Ujls5)wO%zOLsk*uv9s-3T)(QH zn_e?`Id{rAuD&8;MEa{@B^SU-U}FIz$Roo$`sOLHIQzd%@W_^keyd>b|7Vd3vQnh3 z)F)TB{li`pg-QAIji{AKaiziPKr@MnQ?g*a(ducK@2v+O$|@8kyD9mb3bSYoy?%@Z zR~qnzsjr-PUZ=f~fqyk^IbSExvO7Id_xc7!ClZIZX|t)BE(sH1&cDE)Z+E!dn}IjP zh^Sh3aO?9|X(YQw^4+C541 zcZH00kP_+6aC)OP^!1=$tZB_-4y4y=HI1!|jc|?6)X=ucNCK0A-G;Th*D&oD4p@x*;zmjR-#8E74^gA z=s|de*EN(C~0sYFKv&1+U97A`8?hIw&uS4JF;w7zshgYb8)d<#Oe% znR;}*SbhyOIHs&7F(Tw2ay@@dj2u*FHUT`ne;rxoOUK_i$7IQyTM2uViWz!*W6i<% zo}eVe(ApAqO%KcR6J2INJ(p!#IP%>S0%Y<#k`H*u6ex^$vr}&3L~-AmI`3NRJ)etf zvxRwF^%egNT8n`Ob& zZhyMhOdfLg+8)O*hBd)K9Cn(sS9j{0&DlNR)!4uh%wiIHYH&{j(N>6hi~5*k?97F$ zEDNB|L_aWC$@X$7Ws!oTuc#Opw|WFR{b$F;rXVd#(4b@Smi+8HZP+!`@^y2R6K1Z{^>c^f@$OY?7ISH+aDF5YYFks zy^0PH`m48}OO(IWCR6eE=b^wYYiB}UQ+_dB&o@=QIov06sGrgC3a9yl7=L_?@Sbz~E@&&ySbS)jeCj z*O-7FS10B11Mg4;yBnyNj8bnTc7*Q!li^v67guKD(MZ@Ni{XJ-Ey2jLR4T2_IW+ zb>VBf=j&j2iQ;+|kxgAtC7@EU5&#LFq31($96-*FOJRfB3*+qX za8XgpcQd(|b5ZA+)I85FQsPOw8&$R4#VT-mj8r!gVXW8fd8AOistvEQUoJPXyKM)X z5EF{-Gk*O@{zPN*L^k=)m@ zozvhl6GLuGP6Yo3Ikyxy_->eMdFJ1~Ee`g&ntM5Qmf@tWz9|ahtg!nvAib=-0j`Fm zqan3K#nC*vND>)$wBzmdA;KPQ@@S95<-nhz9fDEUE zX798E8FpG}&odjy&d={up45(D-}T1^dv2NI-$T7LrIJEdx-}OG;+ZK&>NQ6k_e0S? z@pVU|47ayazU?S|q{gpO8HR(MX$;zxXbq^obXr%``pS_jU5LWyB8N5=<3~9+dt&1& zTCI&-z2~{Vv1LU;tc?$l4Wv&!#t1%~%&aUknS!UrU!q=<4z@vF16jdZ`;K^d@>nI7 zR;3}YT33|%6Rpq5*M#e9fwnQt~S2qT(nxp*6BFEE=R zA;BM@&5RR?3Fj@tSf*TWw-P}@q6_?-LcFOBPhK$lJdQUIgzQC#dk%>Fp`3?@ZL$Kr zecQ9K1OVwrpa%}d*25m!uJdlJm5axeT|2k=06mOGT7juH1|xWS=KCZ5{tYO7`9Y|0 z%nRF8nU$gynU8zi0?BSb3BI5{e^MhUqVJEvv!jc)gYOG-Zoi5aTE?c%Sn)bMvU+w` z9FL{xe&4$=9Ep&$^N?Agq)8%ySs3guC|VDbh2OE@09__}3!MI=$Ru9AT~#FS6bzq_ z)!%(_&;^J!=r?)XoJw1N9j_KH`%~G>O;{EpkuJ-CoKl%2Wg;{?d$E>A1fnk%4wOeI zylqeQ)C{m>)NFqFS-!bDb;x&kzF|A*ywDN{Tz~I|re@(ZuB9Qdw+4-puY4MP2&S;x zlQ1JICQJF=zc2M6Qs%o}Iajl;7hK9Tk)NtDTu6v-eSAx<+Yl7NfO-MsJmjR0LxO?; zmiq(s<+XWautEF1li_7eo}1tsM`|W-MO7WIdw?+v@*$DK;&$L&wy z#|=_8f(y~ykn#Bsf9tgj@^o~!y}rDErbREO|N4i%+AcgzR_5iQVZf+xv}e(t~2}`dC>XxyL5aY5#u)~ z+fWMX_BD~PDhP-Fey}$m-OGX}iy6mPtdu;Zx5G3l0%i&7$v@b#(Wv>JHn zKXU8OSbnjV#iX;!m@G_*~M0V zK8?&=`j`8KAxuVh$vek6kdzbO62wj7uV?89`N1|5iGvZR=ajh$)r0(g#W@T z?)@|2amhv$|6L}C;lYL{yIf)2P-YgtPB>ygjxA7*Y!)Y>S+u4VXXKGG89fe zgn{U_8vY;`w*S;yRpd;JTLzmbjwSkg_&8zlj+zV-^)Y_wCkfNC6n$z5l$7+jyS6^R zlWA{T|NMtgMCw29hqgqk>k6*Dda#oH1t=C01H?4J*sV{*OUy7C*yWIR)04Ga9!Jib z>ThmroZdQJh~-xB!VKUR;A@VXRv;g0Jg{}yoYgcxVtVat6oYbV7(E zlKqe1F$S)qWSQ%SahaZ?fmUd;Xx>Zf)nMuPG(rr~NY_s+!`WDb`eS=5y<57z$-KF_ zSTN+VzkygDUYxb{cH}+6th?1n9<6B8ULO$Djio!kVHt^x+z(*$IcTv{Lf+;Tk9-Y2C+ALbX#rUEnq&d#ji?|K+ zOO7~eue(2UE%m@j#y0{Zniz=UWQE8F!^bbx_HyqFf(#NU_RaN6EMJP!7&?)b48J6; z1F84686V*20JeO(qN&S&hyaj{zy@(l-fwX^D&Imzrnet1892z1MZuU+*di!%hIOBJ zUcHPavuAYN8r$(8ze??}ZV-1b65N+FMm zCN*K_C9x+G>5)mk!7deaaT6mM&+?$M(~Y*Pva{Ch=`bXfxhnoR{&Oxg%7M{5kfP*^ z1g$2ATVA6^_Il!YG6$6d6znNoTzG=;R=f1M%^;zK<4{(QLCg1|^yLktmBa-w9ut9% zLEjTpbUWNePEoLm-&6j~U-oAZIClHSBtVy3eMR?>taioY@4n1ua4Ne}9dguOINjes zh5MDq3AQnicz_P6g%5i?1^gjFy9QS$?5E>DWSSgMasR0*xTBPieO^SnVX%X=Ohz|4 znRa7-#Z1=+fte0VVA*FLApH{XuD`ro&rg_Vm05@1W{(lWfiwf1b4Ni8t^gm6=6kY_ zQCl)!?OVS1_E!qOnD+DYzLq>OV!0Q`AbkF{0Mo)bG_Qah&edJ7!1vFVHTYl16RQxY zA!U$EW9WEzj}sD=!31Q6Ke#sfx^&O-zI<=Gnt8pFqa~8?I9OVgL|w1-N@yb&hfP&G z0}s#2AgHfFvb-`zVG;DWTA~M4ePvg9Pzv3qR}Z_*L|Y`ubcUd2DRtTKgk*xl&U&uv z9VoTk?lCBliJ#Dz!V=pLTLrk9x>@Z~DRHq9nu=_t>MA2e(AsouPEnn3{7T6|8z~c-gYA~Gp z!?l!zN#|}0Ys2(bkRdczG=WOtX`zMd58mKz?iiyRwjbRXkGghL_Rr|`N=2J>+muhg zpVOY{*w5WLfUFN+sY$1$hDQ?gKYk^2g5%BHSTDw^`4j0e6EWFF;aeQ36lhmP6jcw5Jcv9ziZ?g8CgS$2;86p9RFte7cmVx2qE))5^xUqj~;EOj>%Rrfb(> zeV8?)LRUE(Zr@Hh(C9;OQDHq`J9!~78ST%q+gOWcFb?;?DerH_EtzE(eEZEs@*RGs zsso;pjdS_>*)zS<<5XC5?OAxgf8SB`8oZ`I=3ajB$ZGZDxpfQKhUF-gz(Bw>_2)Mo zW~MwGwhy0vy0zqCUN4zcn)ty?ub}@L=m7-n9U7nn|4fq`SmvN8a||PRXPH-B-;{mNN)E_P;~&3&42 z%qekP*27)!?^P6BH`PqG+dN+ZENP{rw zynBZ1CH%R~Q0An}mnSR5({<(5!0)@`Uu%UP9BNgbxfNMFT0MaoM7M}R=QM=YrJ7OQ zKNar3_WhICoXM)1?auFo!|%=N15X1L)V8~AL2F?Cpe+z`#wF;(VXmy%6xwhFblDCN z7PXXrfDB!`N^a`T_x|l-9Ql*dM0c)B!-!g!3P=jMf1$R6gC43#V_ZvYlU}ilQ~9sr zZE3C)8z+3wwn5a#-dW&|{z_=kA19Yn%D8W6wda=o9V5b?*Qc4*E^g3HuH>`1mOq|t zZbx}BHrZ#RrJ%p@yX~4k@_C-$N9U3ypZJnqpeT$BGZJLXd}og*E4j`@K;(BWJgfHa zGy^EZfK`?)vceoJ#qv&tY>9t~Y$u-;p9tNodK1zS^IQiPM5oY4?lz1apAXTbn&Gom z^5rJQ7h~2QxBP5CwK>Ota56fdI(hW0hx2}pR($na* z56TjrMLz&{h&2Ma2M~oO=%A`!Y?v>9vu_NynxTcaqA@tEiT|WYbTa^KeG>}ec7(9J zfdQiaGXH70w~kl=s+}YF# zM&-ER^bEvh9Bz8TjD7hx8_PYfr3aihu^!8c{8_mV=2z^?%^flwC>;%A=VL1N1rJZc z=INH(^`>6!SQOzF&BbI}d7h^thXSBAiKg=ow4aw-Zj^uOJ)U3{i_wLLTmEPmS3@TU zO)=*L=@ZD^wz!%58DijX^Mq()`zL352v~f#K}4huUb<5p<=T;81|r}n2AyvVjJ4c5 z=^=5D|5IAYEc4IzzV4tedB?{fo;>E!9{~Yb98fdRq?P1Y39=@KxHdfas|Cv+B?0IZ z(iU)E1?z4)(62f2Ja8n^-j|0}7r5-Y#jb|@&fm`%28t4={8R0xnyNSC7US;XjynnvfBy4dfS9E|x z(xfRq;Sb{qDW{u07Xcu5{-##dzd_F%nioeeg9r8t12DZXW0S6e^0T*++hXm6?mvMQ z&jU}$3c>SH&BDt_8ZTUB=TmI!cYOOjZ15{#{x9Z5G)Mg_k=PPe{KgzU8w_ zgw$gkAnxEPe-Iw|CoY2j82tRLq4oPM;FzY-yT$M=1I8J#3|Po<4%brEiRP?xby`;} zyy9C85`}tasi3q1Rtn%irxo53%%Cfm&;B-n@Hyyql5YZ$-82AfAH0|LYvf^o?NI?V z38EnE)OaA+@CI|Itb;>-lp7rKcU}LQOfn>oYCoET?3=5?v6y(Ds|138HZg3Aj1PKN z!yFYZw=fJ50BOnGbqeM6dP!GH4&E)(dADCs*NGnT_E)aD^#(sN-1HEtJ#zcWdvcdE z3);h^pOtf(MQLHVt0jXWc2uG4n&XA$S8m^K;qJ-asuoDk)cQ~C+@*r314a~J!FtHb z6w7^yya2YQF7ow(d0%8-g{<~-p!dQ^ehz~vBHRgr6E5O4>81`?D|fsMrtR}L!xHg% z_kGPa-!T@v+tO;Gs>g;xWAg$RV4Au|wD-@|e~MU_u;=}Gu^UBsttVNB#6ysTI&up= zu}n2AmkN5=4+x@PKN=(@u68)K`Xb>W=#W%V8oWzz^hPD%yf$6(*Hu8)$eS#)F$oAr z?13-8fv33_u0(L=aPxs?St2#WDhUR1%NKL7C|y~(=$lDt*NA}Bs?8IsNev4<*Sw7h zN=n~MgulOO|Iwp6cs}^SU31OPYP9=t$yB0Rl_Zof9c?B2nr_fMe$bL}CnctSKh@xAxAS?fN_xv<*@N`m-xn3T-%~znPO6{&osi0IB$s>_MKa)H z79bWBKw-j_$tIz-fuS*GMGN1-XZzg+P13{)nuF%DxKmvStQKh zX#7okm&trka^O=+j66+DLFFUYZ3QXD%_z}hs^?M96yEslR$egOCDA}<)wf~aUwV?R zJT3caoW>{9n4)r50g{^&KL^V?mnY*qD{E}QRiMzyQY;anpoZZ zeq#gvj$!?-Xs3|8e5{_>RJOx%{(z5Oc)@W+OGsReDC605-?Pbm>5Ki*jJ$@YIGm@G zU-^W|T(?Fta(#@7pMi5~?~MeBup6$uql#neSX{@nr6jB`wurAtf;h;`pK`YNwioXV6e~ zUDcuM`u-{zeJW0dQQ`R4kL+LZf*%zH!6V%#Kkd;8w7c0a^`vFGCS79zYa+;i7UO8tSsFoBo6Ft(%Z!Q(4SGlM!hZ~9GXrsT5lP}nFe zi!JkWnZyf1QdrkUGjpsGy1o}LI6sVNzOQ(loFw?001v8?$6h7; zxK}CHwlY6m9=;gAyO_dm5a6AL31-qUc9(#dy1r4~Yg{ zlPy!^s~_rg`7>w4@=&(8w7zNt*g1dpz>gcvT49||VQQ-~?|qnl#- z{Vs64LUvU${=-YIJJaX1h>;4ZtPM6V&z;tR+UUVG`}w6^xC=K=PAa?S!?We%7L+;6zCFh+Qhu&04>Qu) z_u4An{A5-pc!xcNMYXcLAfR2Bl=VyW(T}r|hCdD@HsjyAo|cq<|4^h7CDl2T{h_iy zov8%RziccUJBWv>vkEf+J-Y9F%T{vFP`EJ4N$j!EcIUk2st!SH@;UDFaH)!VkGQ)# z=_wJ(hYQaw+gIosp0eUcOS}uAXGP2mw%`tVs=d4@C_i6J=8Z_d(=JSG0zX@&Dn}RI zpYPehYC|j}Ce;*@yeXdz*~{0r%60;Oy?**ATx;=7Dwo6TnBktp2mgEaPHSaWKeL3V zTJFz`Mi?vOguc)rHsSYPn2i$M!yF*H(0<*Mr04pn^yoI?ri2-cD&>`))B zw}!II@W+0uC+;5X>^w@$vI*axbq@-os5r#pKH(F&pL=_kW_&B zja0c}3_gpxsW?y5n&z6MWSqA=#aEsnp4D-klt|GdQUt5l@?m=TzK90SZNy(jdJRMu zRYrS*MD>Xi!mCbm;*Fwf?<=V=*Yn)3WuDmyCBqw^5-AfX9QZo!TIN@q7n~Vc7I#Xb zyba97`RhXw#KSk&6&sb=TOj@%Emca zSB~1UB{6vs{9#z_LfASfC5?Qk(S7?MLs(4pycRnkF{(N%U094g{-JC4fpnN>{q7!t z4BcU;LGjYbg~N+<4RM931iNf5u4==lGEWuoIg5ICc^u7zO_qw@VWT`Ce3}&^Q6MWP zs~Ie(WXdyWAr&0N6O$IAKBUj?^huILGQM8e%=y#0M5f z3y)=KTnQ+DPu8m5Uk4BpF1}L|Z zf8oN8Vy9evb`tVt=n-){&!d}KAzote=IB1sE`G<%P9Mbc;x4htNbaDsOvSkXVrMf3 z!|X@OY`JqBw*BaG`YTW4N-2bSA&suF*HQxk?tO(*FDcGbBJ&>^d0wYv&)_WWjPb)Q zXlWOgE_p0GS*&T7ZIiHSB{mos|IW$Uw2c%cDTKo52OcSj!Jnuczx(e=(8IqO)-EO^ zPpaZ~Ie(l;6rG2FRc#{cVyvd_lhd(VmGBslDXd8*P~90@R}Na2@TI`^Uo zW%599`X_Rc*8JvvZj|S+%R7MhGBCp^qj1QL82U6Ic3w^_kipoX?K?(0Qvp3Fv*~|(W0}bylmE7`>wOv%o4<+rf23ODoGJ`6JParFh5s6v(M$DQFcGm zb1B?KR7huqMv2W%-O|}|fvYdp$ci<&>xz=Q{SWof0g_(elYHt+5y3cUz@H)0d_v~*W@>_Ia1%i3nS zJGwL9N)4|)@hxshnk>!Kfmen?gEfDx0ISz|M7#7lO^bV+va_@sEvLvwO~&boK%5%k%G`z@BkEHHhrRbQ6`^%)hlD6Dl{_Z&{9MCVEsJCONcJsv z9!oY9er_Us%kqevDI{du>VexGBX%ct38~wi&nPd>q0CaRdl#67r-msRZ(i&)w!V!J zBM-eky^AcEKicjPA=3`m!~3-%77?PRQXj z$rWLvQ(Kk#gg85eL}*&hF_-t}K0o^m${exp^P!L5B*}Ksf+ie)Vo~A9er^t(y$;t% z-bABujZR=%w}cWQOJ5t^%>gJZ;O@B__^s(s&~2-oDQ~7RN``%-*mi!4L(5vjYwX4j zqC$$mGvoBA=oZc4{yft_xPtT}Hk|{yi~uov^5c_tvAzBWaK<+_j9;IxTh5F2oe+F( zRkdoYJ|gX7SV?+fc|cI1N-a9m?+B&CXU*Ci?I3=_%6C^qKxaq57AbWSmN} zkntd&V(Gh7wx?MwQ{=VR8kQ!N44(RW9QCu`^4R$lo$@rQit{n=NBPWrbhk;$%RgYELh#APBoal zcwXd=nDC`d+|&DaCah13w%$R1n-Huu@T)DjRCsOwH-^ITecvgtsPp7b@8~dxv za9gW&l{{AJUSBP3{or4{U?SOa0 zPxIxb`S$|?=V7G_pLbu)(zkvv__Mh@dlz1_^i7X|(!Fm`4VGo|O?p>W-9R{S4pyE2 z4U{+gxZ3z^Y;)e|!8-cez$B`;wIZ%a72{t0;mX%07)KA^gtOvRJ}NMbkiZF137LII zqEmqD{_9CAMy9A_ywH1=w#|V@dQv5~YiW4eI=&m^U>PZIM-&M$b!lUb;6Du$-BUwY zUQC`@a=iH(RhnKSDy;2Rx5+%Ppm+OIz1H#2rj!Aj$dSpwf>+$%nVq48I;Kh&OYtnX z_}8q9eyW@_PF>vwXhbM3DmMBnicvZ5x~|E-QAk8pn^WU%V|rPx;?Ne%Ro?z5RzW4a zE*$?gA4%bMzkYG$yeOlwM-Y!F19lhkkS~&E>iU}gAiDlkU?A)KVf6uiJ15t`3|0EM z2I8DkihO3AT>;e&OO>;t3s;p{KLHEEwQPXJNRglsr@rF)*ff?4CWWVcR!4^ zv0P~^=)We5tWeY7c^rs`n$oYyCK?9uL|$Egt(5r(daXd#ARY>V!ZJnGCu zQK5CFgOAILc&;o|R~EtZ_|BLk_Qj%Y&cqSjI*Wbn*3fW0Yj0qtISYxh3QsvBg8mwB%BVpkTq1c*Q~ z2Q{go&4seLZTaaDd#qGVVZ_E!a}km0q$on;RTQOGKx#vZS1ht?uKQ&_(95cR_II>I zjd~@B=8k1?SkE836Q`Gb`!T>J5Ets*47?RZ`H}@o}AH5ujxsT2FC(OAm-9yM^k%4Y^!xUTRmhs%Lrvw#@G3BAHqzJb66g(?S&_9OmrMLo%7^7>AB2LP!v6Q*z=dai>B)`XtzRS5 z2y<@)>`bn2i15`uT*rS+Ggf9^&t!jii1)9GkvijDDCDkJp~}xzW$F6Kys%8E7lC!6 zgEOkR_MoC`=dnS@#G-j{r2jEg(B=)Cmic%$u%lUoO~x91RUay~WqGL`H@ju@ou)c$ zD<17^WkN+0_)6M&M(Fe~kTZH;ROvXD;Mt}Zf{SxW?0nC*g^;mDwLf{faVQAQao};5 zTT52$^gTM<6BFczR|$Wr_^50C3vzL}YC{8vb42mzv7msyX!L@N4vwbiut9@gGt_kE zQ0nN9kai8KC^ZY#1Yw8B5_gy`{A+LECsLKC4Hw;+&ETxfI`vhgTxx|04HQ=p66SEY z#p@|$u^AzHAdd(=fC0(5SW2{$h}B-0myczSF4x-Bkm9n6y3bUXrtn(SxZD^g3Y&(> z*e0H2Jf*GQ8ELtq*rs|xx4*IX!$&2lX#%1n2FzV9s`((`s-k4KVb5fjW@+}sgyVpg zftk$YPgIk|T(@A?gh9oR{0q6`u37W@hu=C{!@?(o{Tnvco~Fwbh8KAG3<+|0>?_d6 z!#lSp5KhJ``GHCC`ZKrk3Ww30dGwJg&&=MNqn<)=2p|}&^?xl-4awmk%anNY@^ne$ zp>z7nzlKSC?3GBRkO@6AlqnOnCedN0*4%bX<`3w{GtoZIdHyZ1|)Q>fuQrWt29AqG%)C#p>7*mG?GK10)0)njj;RU2#1UK z?7 z840D)hhw9T8}=UrT$9yRHE3x4toTd`gY0KpEs@9Hyq1DE&htKlgCB-k`_F3VMAs4o zcZ=uS1$viSr_MPLDHqa%v|JnNiuD-=){26D)oY;8O{Ydy8#%{c;Y|9gnG|A zw`|OuBTx!U`#x0`lTrRIa&UD~F@ND$b=d#>n@07C{lK^zR0^@Q2ZTBHR{Wf8@K~o< z_Pdr3S@FvM#qhCqN95`t7-pMGnalWj2 z+JJSk2Zy=*zqTb*L2K$|4BRZMGj%MZhJ)z-xK?LmCKxmbnaxNWj~a)yyimRC&(t40 zTKN<~d-%=xF`}RIBkhq6R8!CBTt8i2ZKu%&{*Z+;5~4=fMgE083Zu%w(Dcw(zml{j z-z(|NF#!7n{cWdq6_17<%WLM(8EzBWlJUB|*WwgZ1z?EhS#V8O?RgAo^rOZXB1&J9 zSRyk_Z8-9Ie+|85#Pq8XZ;nuj>c+;eYqISw z6Sycus!#;rc_ka>YFieU+*VG=3epf&?EGFVOWm2dFsa7WbtpH{D4}F}Z1_~^38nuT z|3qR^N{iyht1$AABp)$cc&z0m8Sl37QS_7+adBQ|OrzSfj+vexE9E@PL35N|y2^qO z*5$+FIz1H*i02-?c)wdK_OX0ZXWFPe$f5`1wN80{4m{P@^havhiAzRT8ex#|wmrRU zjMyZzzyeKKU=yx>tOU8m;OY=~nkxA4p=6hw%6<_%y$OXemmL#3N7vu_HuUoIAfC`8|{QY82>X|+Xv5Blv3>fJ$O<$NGj2f7&t0Y{vf23P_>E9O)QuhhcaRiKPa`}!nlYI;A@+^*1Pl4?e@jne;{BYhgIOR?A+?gJV=Y%+u-*TaJ##pw zHU38ly_ zryYMh%v@LSUzf2YAEPw-3*;zcD60=M|7RF$S{2mv@X_N?eTZWs_J8t5G`X%xbItWV z%S_GJ)_q=*yh3Yf_{e*Y*}AN%9PYu{RF|%yCJJ-1o zRh&gC1;2^0F`uVTHwHsPZjs*Px-_u~Lr{d`8|MdMjL0r3?xrHKKvV|2HE@n=f8rTf z!&0{Qm=Q8M9+?$hg^FXr`I*^f2Z**>r4ip%(Q{h-PszxD< ziF@4PL~%ZxID)$WYxK8!>MGo*-or$97q5Zo^`;gvj|9I8kJ3#FbESn_1`U;;M`jy3 z%r5*LHm)Exbp`SE&x&F4cDf0BivaI#jC-*}ycM)3+FpkeS&2)*&9D%FEkW^}tFxqp z)8u7yI43l}(MV!K!lY!s+(KVWOEW=>RNup3n6Y=fE})~KtTwJc=R#vIt8Z-hv?;u7 ztn#geQdH-THZuRw@$cNDGEH`oH3Ndd!n29OPR-Seo?wsD3YZHer`OwZCiiDTexW3rv9C54?+ z5X|2!i@zv8i5R$YM^?1p27{1^?XBT7$KMs6s};KdT+!L|Jg9Np8&+SnPdQ2Q+J0~r=o{6Qazi{n8zp#&BQY5BapX?u~FvaC$6h?EzkXxTEQ-qd)A6lCH zR(atFr~H-F&tFxQ?yVZrl;xG1JsPm}&G{4J+{SiJZld%BnmyQ?%xy%459lgPNb3&J zw_KA&j9K!t8{@Jr{P~JTo2yA|BD$BOfH>;&s;@t(Y0!#rm}|Up1_tyh8!)8oT(lS- zU}I6K!`0(;z+lcVwlu@5vp!oV6;|u;<5Y9aO`(L83WdRt-6@|>{9uoOD(+O6O$5n3@1LBT2gV1iKw%C=XXy!Xo6rW(^NZ6sOS!#Z3a4zX>w0iJXMix9mHH66R zmKA!)MeG7YTq))7JL7KB@`J4HgWVI4PlEQQYhsNV(6?9E!=B`CaVUJNPwv%ooOED6 zi9`7e!vxg!lB6hmGaBTmqb)Wjjc2Xm$EXdVQ3$WP|25gY>rcW_pC+4jy-beH!OAUX z-n7;xFJtPe-Eb@%Bsgs(_%m6*K1tkOOnXq-jxh6FGTZ${)=;^9P>YazHBfFnxpXmE zkE?KW^A`t##k`dw31+^}F6`wDR-W{6FLEfAlbl{sEZ``?1y4znJ{R$htmnF%Yo+xc(ObOlg8sosbEIq>`1Xa?MDnIP2_>h@+ z<5AXAhwQ=ZKTKh*C#;V*1b}>1sI+n8MY?#iwH%fG?U*b>zWhIv)_MxgVu>uKCv4{*HA|Dx;*>?H%ukkK8y^e^FD6-L81@?YboS zGK1sp_r|?c*#jqcFRnAts1XoecF1=+(8kwkrYk7toqg+_r;sSfYHcGeFWL zvmoe~$`E^WyljkPjMgLPD`~VVl17^AOfsb{hjdr=%j*uVw%K^fYKZB!Mpg?Bn&n)B z>+eg`6R)x`O~#yjV)2{RzaP)NyfW8)W#4Q^!P3oXJJr`7s!GrGZReEHJNB!`Ig2wv zo>E{JtteZ1FQ1$<{&KbLXUy`aJo(torH1Efx}7xQ(r5%cP|wrbR@M+FBJuG@Mytg^ z(w7b{GE$trzR!`bI*1ykpRi-*!j29OtC?Mu&MyR`~{SaWLHaMAU_`vh;NLY^hE1YIXKFD z=K$ttpLIF>v3g6D$Ww`8uC{{LwTAIEEaW$(EbfhBKwcObQlmF(P@rELWx)1i*IBh+ z_qJJpJ(GU@^x4x@bsU}RHyr(TBF-hL(}rnhrG}KY=Cd?`1EKPz24*o$5_IT{)6-K5 ziYjmF)%%F;6_X8pyR!%X01fv)p{w{;HTF(^-rsxd*3)B#-T5I-PrJ^0Up&dBco9hC zvlAS=mRkBP*~vU~4z;R)kQHK-Y@UUN<7KDqktjuM(yC)*CPrf>IeI@m-Kr@2v)lvc z<2IWuE$vpHR5Ueal6|A*SN2+e_XP$qHJ3Uf)}L^ay4BL|-QZn>(Yst4=>IrPwcD z`eq~DP9w8qZU{mtefK8@%>%WsvqlLVm`}s>v-&nta z&xYx|POJt$_FoGBGl^nL^#_(6MP|}!e0qZpoe`+gE)I`})8ww0yV=wC8tP=xx=`*` z>!gWaSdz{kY+E0FH}ljWT)kmW$J(pM3-kLJDNf_<|`cX`RD{R3BIKnN+X$O%b8H#*Wpem3H@;qG)Kt zg-brJl?_-;{n@0f!M~%9HPb#!ut$JjDX(;eTCIN*3CBN50f6Of#X`#VYTpv)9C`h1 z*$w_bvSXY)!E+wA3n;4)@3Iax$se;~%c(zn6FnT*$2ccuBdY0e&aylflWy1E&&?if zHyihSvKS8hvE?8i-aVhEKzwiUfzQR2gJ(KGhgIhV(H3Igp4WOi8dDe)Gx@G`DO#nu zhxxT0>*Ycm6^G-0rx_hxjGA$!K>S#3WkAz2sUaJtp~GRVv#TX(X`G6*k#Wn>Ppx&r zdXE2aciyoWi?Q)rjQq=Nlv}#~$B*EG*G)9JHkX97=B`$|%gn{&ZO6vc1kWwGZGs* zbBD(=K|U%5XVSxmev2F~-h-gdoW*mMU(`ezyq?wn@q*tjr=IovSL#a%yk^FtbJ<_3 zEunut@k+RHgo{^f@zBl&xnID4&$wNY(RNIhmQAic;8qgVI?7Z>PsO&#NV?dobY0lf zS+l=~XAe2!E9>_)DN7rF0BZ=$0ZA?J+N{$tGvTd~a+yb%R{=*}ly0id7kl`aUsL`W zDMg@af>=lcRI$4Eq%GZqwhvIRS!6Jt@S(Djtox^&3*wi#*xWySKdf(4lLZQw^riC& zTHjJ2UU|ceaenv4*?1~94e{t(-XA!&Li3V3`^qy4w{ z9H!fur3Q|Nn*&ga0^&xGi3BM~C%fF0ei@Gz^Rbm<_;V75%nEip{)m*?dsy@0BtY2wJ2FI`7Y7o+%3)@KV{ZsDGlrM z-<)Qu-jh?Gx5Xq&&xYf>=S|xFBWZiZv~}_=K)rs@as4t?7Zx$c(yS?U4=Ml8K z3j4Iw?-mqYOw;FDs7W=hD%}f0W*656`G(Se!cf2b=aHU6JX3K3Kusb4_h*(GHfAKa zaW6D{=MapG@vOGl9Wca7!<%;U(_S}zQsM?A4l%b`Y-#JX4jcB``ZYay{7JfCU4{{> zNgicV;wXP~)JIJ#OtroSo6nEvoj%>$cSH$)s7mWEHFRpIfKZ?Rt%e z=Kt~{!T>^>iGkd8tt`%i>^Kw3xyr`Yv=LS3D@g(*iZpZ`5l$0lrbO3AL;NH3| zhj~87JokAo%I(EwM`n{R}gt$;+!#i0;VS{%Mz6RT~gZC9wTq;3L@k?`U@uTjWTXr z_KSXf4-+EMW97632SP%7k3=*hxttm$3EBK1&+Mn@L*A@)J}!(Sf54j#z6Nkw^ZSkT z?#C9WeR1xLN*8w7?Vz=bxEmr$yS?bANIq#=c_f^B zCyu?LQt!G0`bxU@UCDR#m6 z(;DTwgTtb6jYF?1y87aa73$kD?1~ZSU1rkk7y}jJC-hID@;u` z??nfU{lh0Sdab3Vrxu?0;jjkzsBpcBSTlPMvWlwP32U7XF_UQKrMbu>nQM#N(pC?; zP5m@J2G~^z@qu!K7kOa&)hX~EETRA%07PTqtzMctd!S19@uG8`&fGe5V_QfFQ$oRw z_{TFV*KB0Go?@xXugnWYZmU@glPG*63kTP$`9r4Iu5>7Y(ndNd91vr)m-b+t; zIo$AaL!LPO7J|dBVOHGd;fALy2W6`+245zZSSy=R+70o9ijwS#X@Itf0$Vzd$RxYd zWVsIwbZw7Z4`f9ipB$+{zoTuIY{@TttlQPaUV&Y~bUPlXCs!CnX7erO@y)c<^=5o}fTT?$a z44<7CMjOFrQ@fkwe{&!o$7V<4pQ$ji3vbZeGgRTRfjdJ5_a7!=EA6Y|vctOD0rds) z*gR@RXk0gXe+^A8H0stjRTP})A|A7fZQV>#XKA#7S}(_r7~CD*{B~R+c|l>GQi`}W z*@kTXYhfIfU@ntWhCj)#8}EWrBM}ONX7h1Xx4e2WqXxZvLugj>1D&22fB{MOlJPt>ghbusNRY4fnN|0Yza7AG@Pl$Aa0H?7x0 zVMyO!&sM+lbj|aA?Lf`C)6AME8jPP(ccT9_25T%^yE#NoQ*7g-`%N)5yVc3-bMle? z_BOXJi={kvs`gIe(yk*`kh+QuHM&bzBQ|TqZ$hP8b08+NG1iRTq&t7&sl?C_ILpS^ z+hO$5?uYj)(d2m1-=vafmRibOPfe*@Uk`u~awHkP>CdaB=(4p7DY2%&-B3iK`6Iot z5WxMs6e~0i-Y7<+aZPUJfma0gYVa=Hil-ecee32t_kCMd#TX}Phu(|2FPzgsK^5Zj zPWpPJrzXEer)eU%An>eH^ar^%6a+AwIE)skvk zSK1xbQ0L!My^!*<)|CD26uK1b@)<*Yv}p3orWt?6?23TwGGK037&QWW1YvT$7?GnIJBJ+-3g{j1%8w?$9q%J)hR99-rWqS_ zF6D}{W@ca$0i1ViI>|*?Ym(q;1+UFfn8r-2Y?vtvmA9i?mor}Xo`Are6-Q=k>&MFd zM=Zk#r>h63f^@IfZ8W-N%H83)K z9A5NI$qM853k(}n7QDZb#<})((jHY=Lq8Rd9EE2RB-5BiWlQis$#y;SFc)ySnUGNem*+WJ4gMlAACi#~X?J_$| z;^;Mcyp7FKxrVso|17oDP&Yo4G%32{xyQ)>BKzsBemrA%wv6cM7;jEQmzVEaKpJPt zAZw;nYY@lF2m6=E7(8&yV0Q&vxBg z>zlq5IUOZ?La07}t$(2)Zc4jV8EQq(_g$+L>V!4>H+R7~flJ}69X)&d%?BGH>_$GT zDbENQ?IMzcW1R|(2rPvV_C8^X_OV}Ek83YRk2GO3Hlx7maP!lSx~FKXZFuY+y`NEK zCx^sW$5}tRcHP5ZpV!jb&fH(dB;G5P{D~W2v9+q z-3He5xO0^^ATgmAyk5$pmE0I9SvO<2Eq-mhR10mrQ3DR5sRWn(c{9{45&I^8KS34S zh=jw#IJ_uI_}xC`Fr$jFDR+PvCE48$@Qk`vK%At>rOAw6Zo~9jWDy~9W=WD)-cPPH zA!5w6kO)t9s6A{PNHVm;O6jOcQy41%7TZ`$9y4M@|)~|Y?C_7ozFuw%tkb{~Iix@2=M zp3P-Ls>cOAAPZKtcdjXuz7~4Mn4l<0EJctcgWv9+ALL~RVuB}baT%JEc zzH|jJFl>AKBdYdaIg$~RuSoc!E0xGa4jg;9tu>mpTMDe_Dj3g055OC$`N zh+$yR4d4twNHUqBn86F|Y(NqY z4@8$1ow9zU^T=n1Wv?n` zd%nE&%9A9VNWq@@^;?6V7BKliUZUC*@N!yZSw%r)=5^ z7Ivl&QxhD#ci;c&X(V0$0&8so&S@lE|GWIYi78f(x+75!OOyjJFXc%ruzG~L#cR!x z5OO;-x#OCt(^s6$&wSC_Us-}iw{gBHCAiBURR>LHYxBI61AltC`=ynv*HAUqZbW}; z&?B+CJ3kK1L{O}J+hWtzq4L%1i1a^cy{*m@M$;hWqW!h-156@^IAW9JRWuY(2X%=YP_4|Nz;C;zba_J|P2$`+!-1~DjOYn%ear$L#|@Fv{fgK^k7>UgQy&&E;Ix)vG5r6rgk5<`p9T+ZWb(8xo)2Ys7(?d8dqRJGs4 zqO}Rlm31UTN>cvulI{CTJ7}sG^t8EXK@?#z6OxNzGnvmXCFxT?vf@0MM^=IQ92t4p zTpG}%Lx+x=g^*jvHhP3|M8}I?4V)^I2D63c1}}`@C9O91^-e0D&r_N`r`2^t0j1(9 z0&^liT)b-}CMlnxp&FEKrluFw_?Y_Pdm7ZV`z`+#wCKBfs^8fQl3Zwg8><;sakUw0*WDc>Q&Nz=4b(X-yz^wmT>>D|mlcGU{_$Xda876v#s9oi&}QR-cbMdX8vAY?xRW}LosmT&8+Dxtt1kK_H>kgTPMDWPmVLF; z()j0laUg@aTd9@Di5F7C2Pm8ThudH&Yv*%t=5`=yGD-6OFGf~R3pW_oK)K>*QshHATtG-!9#THRPE5(&E2f=tV-!ZH9FP_ft-+VMgvWaV z1jBeWfjH1m~O0iyZ(*kmTTYPKWo{lht0qjmMlY|baHj;g? zy4K$*SE&5aj(2puqqN(mK<#^La z8IRW=2K=%a4;5mm{s_5a%ODykq?aH^)y^Y7*ost8yAtFbL?sl3z&)Vv=SH%FTANu9 z1xI#=er@6RE`S>?$LO>w{~3@Mlx(goB12^c_RL07Wr6;pDDT%fnBeF+DTT;2BrxiY zi_}|dX*&5???g`@aJ7D08Qz3L!VSnJ>^=~nHQTqRZ@RyFlX=)&wHb-)dqURVzo-wr zT;N^?J&ycvoH=?zzH=Ov=Rc$Ox4(T{$djnYFJmNk9j@0Itlh@VLk1IegW5IQHU#r# z_s5WpaM-e3l({X@8`_^?IjNI-J?0A+vGyEBin%PrqJ<`jkzrusiwA3BV8ejneIDN! zTWYev2NVuSij`^}B+ER1xq~OBB+cV#PTUVWslk|NP}jt6`rn++K;#YQ5%~~7n@11x z2a!m#WdX=n5KC|Iw5N#9u10mlLmi&*`PGG zJr1Ej{I%AXQbu2@F0pCwr|k0dQLDZQol26rVzRJ8MM6k{6(v3e#Kd~NQbK9ok}ltI zIIqA87{i^eBc5N)*$57Dg!#E)S*`yGoh(kVba7^5APC&Sqz5_uMbE0TTt6XlGNbNE zc_HPz4*F2@1Jq0sK8Mh`ouT>voL|$iT5L~k35YVrJPqBaKb`-mLR) zs#GLl>Lanc-4TD@H1lUB{@Rd}iK&^(;SKTu)OU>oduQI9nqK9_3n(FhD>ft4Oo zdwfdLMOb}np9k)Ka`eT14(_0r14-nXqKla%e72sp-lQU3AS zn1}u?XZdWoRHmY!mq6Gt1^~JkyK5DQ$XBmOMVn-58YUDRkk?H}8Plll!tJMa#@QSy ztAGn}0=f$zvh8RkmauC+I=;>&hT{VYY!+hM6O_XlwhlbFa-*y!dgNs{1-AcV%4f5> zHFj`>iL$XgRNid=##3iZ*#Jla##MO|w0~(yXG0eM>seJb`$v7DYKW2g*CW1Klkafon%nbD*+Z11l%S7>?*XQ^N>CN+;tHe6N?SNH6p(`z+*42 z{3|}bv|D)x^3D|iyrDwrwmJ;3-pTvt^tH4e*?imgtg5eum^djnYWK1aO?{NGUE}?i z3I-))3xJd`C^1B16KG)5f(StFoF<#P8eusd@}SDogN`+ktAx0NUbM4o49+;fpSi%A z$>csVR_XHio#ENP?QW#etQe3uVMK{8|3*yvV(bpM(Y|U>S-*fxek&V)&i~ZEA5hl< za8ECn4<=mqafYhqcwMaI^XBpeUl$7^+S)wQh2(}S=)g^C{Ot?flLKw6%x1cZbdkIX z-6&%Nw>@An&Ohm6&75|YeA{;!?QZYct2p1L*UJw1w~iRn!_Sf4`Inhh(6Hu_mCv2& zaz8b?Kd*eek&kRd2cS1N+dWhpbWIPP39rDfLvBST^8vrg8RRbFB#%H|FCzROpFzKu;!7 zhA!BL$ERF-40x9sb9=F(tP}*+MpyC^_gmsWp?tr*3g|Ra^(XxVB%yB{_J|gu4x*`O zPQ6WK&;t&L}yH5qRD`=j6OIaFb*VUWPFhG?+q`Ux;i z37cfma_pLP1DSC!7o)mlexQjKI+=Rxs&>@0vy()~rGI1ey$zGbI5RzH6a!!CZutn^ zD+^e_Qf;JrNnAe-!T!CR`kN3%Ha?|ZjRZks!zH@<74D31aEs zC6UT;A#4`bx@Z*z@v~p5Zr?en$LcxCmv!^e>Kudnnj51KNP&WaXT=tJ zKk0-Hqf+_L1zVM0jA(BDcd|e0(oeQS=zWM9?Rv3z-RWX!s8Z|@a|ohOWO2|$AIt{0 z!t+-1=M4}H$*D%Hq|d-zp-|OS7WCWxl0UEh=CWC#{_1aQm3S!zO{D=6`!lv$%-O1k zNRC5nlh&eFeCZ%0I*t+H4142u*9+q$mS4L$@-(CK!S zBDkAoJPAX_S0$L)Q2wr57(i8kl z>(h@O``&=3sRS8_dgZ-kSdvBOk#vOGf<2@aij;y(*X#Y0IO(2V1E+f$lQ0`k^7lSm zP~G&m4mRi3Pyi94-aI)Voil#kDNsAGT0E3~Uqph4_JQ_$D6*q@zc_b<6!*F>LU&K} zRJj$NndzR#`t4~?{~Vf#Y@dA0OSuua)8pMW&=J8Rd%5DLhHYeQjcYbIJm4_b2!6U% z_-{o_bN6XBAaP3ZS}5Z_m0v_m@4Eata#fwc<->|OK31on?jr^fX;71g=U&Yyn(dZo^xBCv@K0uj=WDau?zEH zCYVoF_!~j&4r*j^3dBDIX5OizBE(X1+4YLk(8XqOsJK#Ivg4=Mx2nuDVWbv!QIGG03B^< zks;0Rp=Pm_BkS7A^7HUR`iZp|N z3u5%|h*lYHjJYB!$Tc)-DqZ=VK(nEkve8Ju1QU#Fz9)HD{T4P&l^jW{me3`FZ8@_Lm9mF+G(k3Bo7FI6bzx zT@yB@yxEhbmwNzHA^gsfccr+`ejc#C=$=vySZ*3pg8&>g5ql8D^ExA0U^#AU5SuF1 zo|stuIJ*B%1D{ZL&kKmb^*n)s&q<-E!*`QdXtUQ_SEv zpftUDG-|Z3953^ zU#)F$7XhbRm;hs3bZ*K$dFDP_8;bX!|F<&2PsCZ>+w+U zQ&lV`2Fe|0E;wG*?Uc@`Un4~qoZoij{gQSZkRe^Z_MJ`O&VZqj*#G3{F`{hL=3lRO zIH&&7GIDQd32dyreohA^hIr071DdNTEbSKJ&UwI0x&IiO6SuJne6xJjj_nO{wU1|_ ztll-oL?XKIVjF3bmYyKDga#NvgljV*@km5%q)MUkr+$J^;>r_FOP+t2HB0qv|8jwy z5t+n6<3RKQ>KZ{@udI`dWeBi6p@Kf4TCPe2 zSTGCOBQH>KRd}PQ8MGD3FiUkttKdK#u|Nq`-O6|JK4%ijn*X7n9VeJLUE^i}0RaLDpYB$L{udCdsD{=>`*u?j^8I*iV>&_qcdwoSuhm@F6q^xdPEN zqJ{vAfsyi<4|hb zdP*ive&N9-?Hx%CW!|_;`AnKZvc!6+fod<816P(%Iyp&n%hKBivDr@;mrfkcUd!d3 zww9AilPD`8lw2+v0@gYhsN>iYy@&VFnwnk%J_OWKX;pAU64aFkT3p!pglyJf=F`T7 zsaz^IA1>v)a{IzOjSz}iE>L)A7XeB27=~e#caT3Y*x`Yaoje)4rAB$9B-`1JlkFTK7uB@&yGgz@Pdu=;|O74aY2r*nfcrS zkNnM;t+uRac^9`AbOap?QHVYZ9?2{(+!KRr$D?e0!A{rUbJ9k~i0IcPq>c&8v zTq+{Wd-L&{or=wj91a3IVm#b=XO}y}9RZw?#i@`A4zxfI;b0(%z<>L_MlSe^q9rU4 zp{`@0{`|h+eJi9V^EeWLvRHve-Ph~QGRj;UC~M3I4HxPSC>Rcqr+YzY1^d6W0>@o{ zMc!$(3bYIyll3}+Mnnt)@tDE_xsvvn|!}>EbiRTIB$Ft=l09v9}?RAGOPZ4&(Cj2 zUC`XAvun$c8}?Hrfr+q!!B^ZDuu@{tkfIr8aGB)*eaW#a2b*!_9O>1dsp^+i?l@ljiJ^laOKR0{-`|P8CXMff0_`Un=h(hwy%zcU9#*gi= z*yit$+R$4p5O0ngY1D5VHR1{Olj*#u2L{H-O98r91 zBtV4rhm?HrLENJ@Q;+k*MMkn!C4>968I5$L?ymS;HTw+%mOcNJo_KZdgZBP2QQPM} z>^J#S<^L#O;aD4Ojx8rslS_Qjt!=L$#W~9Q6GkEQ`%@Ej?PikwO~7m1!h}GhKvGh} znmNp2KKxJw*cKt=_H?@*VpyK-={3#DYdU&MQog!fNIXLw!FPwEMaT=V&9}mzUz0sg zKTjOEg*#~d_x{Px0~}{=R3B;J+cIP@ds4>IZJS$W)&N=+=Jm<87Z+1D8hg_@#gBHW z&)ZPdAN(GWKC`VS&^<^yP5G*=B#cs9261@1t4p{VBI9o1OKI;fhC7dexBnGnHN%p$ z{p^`PkJ7cS=+9m)SWp_hmraZL?3I%vYWBD4Z61+qEa9Tv;I3T@-Lr#M#Dpny+!8kg z;&bd4Ya}%;)J#Q5qn7}U(H=23zjLRod=EgSg6&>%o7Y~t@|&Udv$-FycTE2xfBvfy zr4v+!BU)d+@wHnaTRW?Lb?i5QiJRu+n} zPVcj~&+R(nLM_?5EtO78WalP${T|#U^PaV314ML1L{Fk^W^T;7!1nv&aE}_fb_MR! zd28Rz8rAO!;39ssMY_D*m+o!UNN7L%$+KdzLE!xk|Ce_Ui)s_+)3>~nmAd(-Tb(v5 zD5S?#ealew9*e0OQmfi6{Hr7QMb6%7*0Hp0zBL6I{2xzkH~;~|w);H3uiK`7pZ-y$ zu+5t_p?C3J!38M7kkHqoLdHDyAT`LS%_60Tq-e5v&D|&WG)FyY=&o-o?i@D^16+Y=CHs! z7tN3MDVcot@Nz{mCqrsZaP4L z!>Lg8!<)RIMA~lB(E>?KD3RP}%5(nZ5D+YR|2&LpumAL=^egmOD0V=V?s~^(LuX~~ z3H;nHBF6sCVe2iUqs(Y7w(iO8IsT*X%y{wKU~hAq^~|~a?x%)aob3;vw0-x!7pFfc zzQB6PWyIHeS4SHNJ=(HXIJ=S~qAEV4Qwc>`$=Sv@kTs#vYeE!Zhq)PWz zd?|VJWs-lm{N-B7{Q9HBnBx}SNaW&VGECGna@HBV)Pslj&!UwCy&eo$PY)yTU~)%9 zBDL&-ToFSxvr~p{?M*h4Cr?hN1t0>Ora_lW){+x|Rp#)T*7fu3#<7DMZLJXD)%ri* z4y8Zl{t?`X35@5K^uae@Z+~**e$%(;`OOI_(WhUMUp499F%mk+!gM|wGKWZ=(-r8@ zR-&Jh`P^h)E3sj*`6nXyn!BSU3;g#2$^hH2U1oF@-<7LYCo}>D`0;)I7Cki*CUR{o zPRa-zzR|{QUt8_)FH-GpuV%`5i1<;4y-KjMj$lz;X8Pv7XR!Yg) z>wGUjwBZ&mqixu^!GvLfQ(Qy#2ocf-^*(ZfO*jB8J%$#jDzBdQrCINwxOos88vS(f zQXE~P@!UlJ#y2;0d$pC$EGn}AI7Ap}8&hdAWQ!L79XPmGa`6*(8Lfzu4TRg^py)3D zFBw)O9t}=H4qG%RR&@O2x>bA{?mw>u=_AX(-O~{BXa}Ly04~BLWgP^qOq`1a8H(no zIagwEm^1l2(4!8GI!tFXUIa3%?_m+Jfq60vjK7RSF(lLTdxS_Z3_qcYZj#C7Yn5Cy z+wX=jC3#CotG6>0Dga-cSLae+KR?GyKK7JsWEymgCqRUq;fFh+8d(Uk!y#@+wU@Ey zWq=HWnvEv&6Lbe@XStv0F|jl_xIE~`h~@o@Mm+4Ld!F5R{mkoL+=m&?#Eq2dCeUc# zZv|!r6L-O1aVACzg*I|u-YBsifc6osEWMi<^AZeYh6KZ@P>Hb^5SxfN>e>=pq*MdA ztiWm-%YtZ0W(qe7&gW9Vi_-KC+UbPNt3^d3L+JHEX&9Nb!KF-%9SZt6@8t)at=E|} zw1bBljp;c>9^5XEVb2-1)P(4>)Hu;f{79kdi8%G zaExJ8LJ_3UoZlylnbS1|Nkf(xVhb@bYtQc|Y?`4!a+r34vSAFuLSgzt5eJTnVNJw4 zZSqbuiL6`o zu|{J^H^*b)d3JQ`T*dRYNR{1C$|l<|KQGcilSmWj>b)#v^9aNR|C3qss7Fx<<_7bp-Fjd?h#;s@boIELxTuQzGUv%MSg;0lJjg@wrf zz=%EUOOhw{$SzF+#@L|44oKp_j24DJ@~iN3V&Wx}-5{*MjKJ;Bp_V^!Zf&BGWxNQD zng7WsFA>CVtAdiSqS}wiq~@uPVmgO&Is_v*1sFX56Dj7bZa6xkV1H|p(dl|Fpy<0B z$wzR&l8x~s<;kH6RquF9`mEHNf4u>u0gwX-raE6edu{eNRqSU5f8`3%|9S3CxaUf| zAvSI-j40~c*c$xulO!*iSciQJDM|oOpm|@;68Uzmbmc&^#HJbJ6V{~gkCoh=sdx5q zh!gXw_Y0H9h)iFJovf&n=-}^OC+!MMC}KT=uoST`=;*HY^nV|DAcV zhB@#0|9B_Sf<*$sKiCbDLUS`=#e`5A9RMeexS@~2X{*qm;M<nE|IYv}*qjPpuX(>v_&u?7D{?X(b5Gp_#n*?^RV?SyA^9Oh zyY_!w37wu=B)(fqU1UsIO^SuhZ%~a8AdwVFAL-^rR59Qw1B^~5b5$=iwbb?S{ zC4AoR_GtA-9{({)mJdhixc0{O9)&97W#|K8=TFE?PdQ*}wu`!fohe;>D|I1l1Y1y&H49KI7wGf~iVEOJ;?HY*g>xdBR3<(i|TZ-|K5w^Sn+K+&K6)g%c+a z6S=d=c(0*t#tkA07bLEjd74b#5IVka)KP8=N{-6#DJot1Sa^)J?&@odZG;lw^_i=d z{3s<{tczAE{rQio!z@z8f6EAQU8>&8EeL43i$;UgCr~FCY94;Jr-2WL2@_x;@ITLy zLVTA^WUvhJUFwa-5CN_}R)>uy`%)chk@b51nFl_}GnDk8xb6dHB;k|*S6r)9sU2^c==I?yf#PC!R~7rzWUxzK%=hy03d8J zr4LjrAv_Mu&p@CyWF|OYXGm6L*}0T4{vI9##wZuFWN-@%|D|I;`Vz~v1WQEvBA$Mw z){*%<-m|GF&PamWGg!ZA z2mj|`E*`%?A4qx&tO%j1Gp%_7l2lyu05r8V?(=sFG5boE>rMrgKfYnNoZMt`^y}|` z$wv`3;$#}a1_;$+^Qz7Lu)gZnJbh9caJw;gidL&f+%82m)>RgQE?5amvX*u*$N1i> zpVo6#UcbE};DZinOOo%3+j>f*3su2Anc&}PVpAR&|9Eqvp~~u@$qdo#f$BX75`eiN z?8vx4tgSXoKhQV+`1{1yi!~CG5-;uNU@f=H&Fup~2zC}RWwjdsViRfuedY8=o51QG zDGZ`}RCc6g{e;n?oC{@Ug#jU8Dv-lUyFWrliS=zrt*xdFH{6)89}D-Q3nGV5{QpAN z^Il9^y0|Sm{{NjB)3I%|OO>p^`Rg#%sqwPQ{79Y%_XY{HkfMttVtyCX*z+)aR{GKX zu)_f5n`T6)f@NZlVu-Q>`_Pe0Wx*KoD9Pdh)Y8%^uvY*3DYCTt$8-|0YU*J$Qh20Hb7X<^LFh)u00uD(6K7y zBH`P)o?^(0vD~#UrFO&EJxn5e=N1zDAO<+$vdJ=g;Oy~J0jj-H3Tvi)UA`|}O6iO` z1v5C#zy-2Jj2ZDHRETIh8hHp3c0)N7GrCWqK(Iv!x7<0;k!gHp_+~2aEYVv={Db;= z`U!q(hkM3^IdpKW(HGtcB{ey8EMg{^YmRgsE!=8!)4lB`q^x?T`g%wF9M6(7wsWHA zc+0(`>$Jz(4wl2naxM%~A~&)S_w}T(q1Y`Pt}Y{(e{jgU1Z8Q4C6)NzF&F3UB{dm| z2?glOj$pP2z8Szzb_mqzv`Fb!a=&XZK)d*1kvN%cm`zsKDTpCWpAdKOE_eS%_U_x8mvW4_7% z?#!1>`ft%%hk_=4=5vJ++Y62sF{C0JSA_TQv0n6VTUAEvZQMSkFi^&)f zZ`;caF3R^_m`ZFwzlFB&zZOozH$;NnQUSE3tonNKes@LDy1sbNIlX5y=HrqOiJVVX zFlmslHC~0vNnOt1@E5O>E2Bl)1Pao04@d2{?{-Zl^B)+DJS4e;gkCcO(eEQCwE_&u$QMS6!?+Q4^Wnhs|JApNvyb^&#O#~D(SOZ~V=eXbK2bYc7 zwgT~af&z@fQ$MfZ^}1;Jn*M1E^pTtujgu#Pp^J6|8U^$5i zPyH{LG13@gmW*R@H)Y;=a{_NoVa^W=K)$QgpH-2u)|zr&jLV+P5;!_qwE%>DJ9N~L zToGgkbx#n{Iy~EsX#z08CvtnO$wQHU{s0-Qwe(4a&8Ho&gaoWG@=^Nr_J?bW52~IC z%&MXoyk+3khgM0MEH5Urk{Rl=CZ4VQ$s(c5D)){^rlV*f0YD$v^rbnTgLLH$IZEWh z&-Bv@UE=Z83tNnN#1JDIzK5gzB8E0JB|3b=j18g!GJmn1f7(e@H?L)nm@K=HQa)h6 z-7zBa0YkF@j7<#SfB!OY_#}DmTaZiJy&|a$Luc)RiXtZ{Y-D~y6OEteD32}4VY2_t zVNxe~iBW-6!zj05>Lb5IUh1{W7rZelvOouFrCf&n6FwaSEv@*5Q2Awsq(~(5OalF# zAY=vBBIAI$QDgJavz_BV7FR2&Z1ZAsJ&4I{9({!B#yS?Nn+85?y*0_0i*#oba3G+; zd3{kiGK^^^4A+-`8w57@o^-Vla|V4Lm;8!6W^bf?y|fP0%e7U}02DqFL@c)C*xi1M z>li(tU;#W6;3|}-*e<0b8|m*9O|EA#{ts9Z%QbUHn4`%k1I_rcR7|o|OtEMnG|wey zP)tP`^hfIm-4rvjvK0(t%JBgis%*|>VN5vfS;JdEF)*C(wV`T@dO_6dV8zG~BWxIm zA;ZehI-b@(jO`+C-zkjLzj1Nkp!s+uDXrIReI+bl6BMPSd~Na)yZaG;&2cYW^B_v??`tIZYzM zWs@vQZJEz+!Q=t+yJImQhRJ{?DA8n$Ia$f0uSZIY7+*rZz!f7BMSl%!_cxF~KC(@+ zxwRPeZ&#`;hy@Bs%|r^N7z!2(P7Z~5Rg><|YlX#S z%1F7r+R&hixtRD^shBk3^6TSTpNJ7N`*)(yYea?|B9_7Y4dl|BO=vxp_Hd0#-l{eC z*1FRl=X|0izkU0wW-q@>z_ttw86(I_cXofCf+s;4Zc5-QYIqY8q9&OH{Uo+eOnGd0 z$)br=%vf@FK5_Q&>4=MSH^*)vI1sTQ(P!v!J#hVn3D(OXuhNYF9eA)j{XC}AA!Cw( z|BO+c+shfw+j}XA{*?suDLN<^ky~H&*=v8&VyD7o+c3zQqVsm&r!I&TnZQrOgWXG{ z9)gcnd!{MJxZAm6=Jc|^;cC%F_6VA6t}uDdPW^QguL?VSc7UyX;n4j#bqD}Riipmw zwHqI`5#IXJr>wXC&nD6mf3jc9FdS#HGbrpOV5pe)2QN6=ku!n%XSI#ahsW6$WEaJf zQ3b@V5-NYMxvOo1$2+}x14&2Ae$e1(Q{5R?n!4?spiIkA2$T=^6<3E)uT8Z@NxD44QN~^p4nK(-5EwCL zn%IV+?OP+ZSw0fD*5{Akp{p#Q!%yn!wDeVlFZ`q>3Z{#`yc*CisT9(UVueCb|Em`# zMF&v!D$F%PNngt|_8wW|@x@fV^sT?_i6@Nriz z&iSzRJT7=$_oQq&^ZAv~vF)K|5~LDd5MDAnEzp0CNFx~PHX@sV<$#KoxvkEdsK@CH zi|NvF^RhP;|LVDJGSW2Xn)V&GOzz6uUZ=L0B6tQi=JS#ijvdTUzf&KD)^ z@mfOjW-zdyRGSQ%XYCnc+JQA@ta|U$;l@e*+eSw>n~YcxP~5C9$_{)gND2T147C9e z4N1VSV)6m*JV!?%jh2nD*PE}s@0deV|NIx@YLF=vomh`AJ+zZCkXlS95gC)Q zv;l(129O>ObfuLSE;QbTaRz^Sl{v}Igy|5#Ws+&_GW?ZSPU z1;L?Q+fUkKH2I!wIe&epam6SD$eb#awc>U?c4i#z#jv5HjJ!jTX~8Za{J2<@L4e$K z$uq)gN`AX!(Ypg$oy>Tk@3W;b`y%sBpqoaWaqMjg-W?J2*U5|_<{dduLbcw-001+r2oZbuMeGr%kmx; zsGf;Bu?}SiTza6kR$=4hG{*3JV7SGAAjO7pXar*nOj%m`d16e4a-b-nsaaVQT5&UB zY;>cJ>xZ09PU2#jy9}@Kj@|0%&KGzE&%neC#bD)MdpXpS7>42zK0i2z3fW~zJ4wk1 zThN$kycuIkN7aS^qo>Ztx8*Hz+@=z5;Y9uzOla8*?G`L0F%ZrC_4WLaXMC6rqatUc zl1Y(Ow1B~g&_?XZ=&X50aX<{*BHVr$mUM)+rGF=SF$Gi@J<>h6vvFBU~Ij|Ma=vedSX8Q9f|{4 z(FqYlLDsMTE)rH&Kp-7_Tyav%VsQM|gW0xko1eGy{3}PH;FOn0hQkAXX1=*c;d~N8 z#t;xIkmbXg{RV5ggtds}butj=#;2#U1Jhcr18a$oV$Aot^CMxvZJUGAA>~3b%)3$J zkv_Ui_bhZmiwAOfwo?;1k13RERlAHMld0m)l~Al+PGfE z5uD@?^!njWFxgn^m>2VMK2ThCPBtURF89Dm*?}dV)=Fe-@d{Mooe_Png+1)W6dK?f zY6O@&Ur=lGxt$EiV8%=XQk)E*t?WeGkSP+vgz=FO4kpQFJ-A&FR$H-XmW4t-7i!L^ z(|*HziUj|WVSwiGl|aNGvPE-EJYgCHP1TLP9|<2~_CmsQm@)EgPm|aWGA@TqjGLc1 zx8rK-Y5DDB_zub-jIc|^EP(>6{OXr1M@18PZ^n8L*4W(ZUM2~Aqymi!x%6@0J* zQrFAMmAj&|>dnGiP;e)7`0#2`IbLZT z>Bu)w8RFaFPsd2_@8GD{^;&P#8+mFI6Nwt_GPsRrl%m$0g|eRP@qWp*BG7OcF9udq zWRRre|2uC16-F9d5rUL$*FaEK)WcuK6~jV+6C=_J`GxtICI-L<_n~=@fUE?4+J5B8 zBX%PII9gBuFYGp0vkE4U9RbB`TN7gdXfnlM4aDP@H?+Os(Pq797m(rWxzDy%N6eR_ z9bf6LW#RG7ZmaT_tJKzWAWsVhidd9ZeP4Aa#MPg=twjJ6*kXjFG>86$eb*tQLDUv$ zK6gd8;>LsIIw*Htk;7fD0$#8UnvxKD%eS`3G_sp853dh2GJ5?V9zp8{af87sPn7UG z+3tXGy*wl}(1>$#shYy$3EHI}*2xNc3br@4UEGTa#P&shE&`Eh=UyLwR}3u?&ppdm z5Fva7b%#PwN0Kcs^XD)6MfaiHL_PrFC!p}7asl1C6cJG3<95CY2~}Tf=kYZeMun-6 zv*1oaiglha&)S2Em9zf}as5+i;3aGSu`}}=l&d1>p5}MUypZC*SS>H@h{UVAS4F|# zV?V_7NB%c>E1KIM&OzfO{{?UDh~Q6KK*=g97XW2YVIoDjsa(+8y?d1ZJp_`c032oE zcxF{SO!4mtJ+bdK>ase&aq(P=NLFCZe{otW90c%POD{_GTQlUR&T%LvLuq--@F%^L zcn!7*_(R)zMC`GtL~fq9BNe!9RuRgbiLLP(F!Heg;^#du6fjS9>ETCdLz zCl~`CCHU1MH~yitx=rsR!KOf?7jkXeO#&0q3ghnG$-_sR1yMGIHZIC@~b-4B5_kS$6 zgYsz*G`+)BH?=v!xJ=Sw=!*2jDkl82p3rM#^qcs~=f65n{?q!kQ@g;r{p{JrxR-w- zUb$MGrN@)DsIpLd4#xR^J#qtD+)!=lvru$}krJpFAc~foeKF8tcy7o(KtH6|o`g{m~XyT)PHcjpv-B(v><@@3)qrpx< z>n!pyn7>FV^Md6M4BqWMU*bVr(CFJdSLJq1$-i(_+D+bl$=dp-(s<}XKm#4_pP!Pp z{lno$1yDT#s9wtf#E9K+0tf~Jt#aEQ>t4{W1VaL<{1?pc!&uQW)Ej|Nsq(uUd6sEI z9~TWOoH_3T5zNLfKLg~x7IBkAnBN6;+xHO&kZ%A1GOYJv@HD2S6maxbDemOItkQr4I4!CTH_Jh*N80w(Q7nXxLcT=250+_|cQR#Hwe zw2U=rTiO$7+$%3GTIZm@~0HW5Pqn7^jcGO z!-4RlN>MP&gR+7PP}1_*FaP$ z#l4)2aIeKz=wHvZ9vw;dagb@glwP+9DBY7(d;0_8;XdYX=C6_K0eEQ_oY=pEy?)%D zH;7*DpG&1&bGmfqIkg60rS#oD6zOvbXZAG17?x8&3=0O<3W~0XHrZ;0ls5Tqu-A@| zcXbv}Rd@zeIiahqfj#o^`$#XRqxl8eE5930D;g)&8h?jd)3;pk2;~!5!O76up(PDm zb5S($su*H!IcU2|Z=fpyiQlgVhfixO-2(PF2rM8|IdBgmV&B(l^L!nM52_O8aK0u# zu!8yo&erPt-$J{84Az*w|J@yEk9;?FVgLEB%PgQ=t{XClw!M6i()H(A0?!j3vb6tv zMcvM75&ejCflV!NsE5K37cwM(w6cU&_)-NBgM+m|cx!%l44Bwz7Hg-F_w62iycY6Y zX@dj~E)5+VR78PMwrI=?_}Gb?w%rnsOLx};&f?^^j(!#@C@_9s1^D59MA~RlGraBD zt@a0z5$Q6k7ggQ51AC>`1GUUTOJk(88W6L)+re7B>_medP$K}Sb(S65WOxW?E9(kn z#5>L*7BD5SxaxrUgA<6TA*u2HvJGfI)HN8{4_7gkM`PMB1Vabzu}H=;6cYn37_Rhh zWXgJHk3liLyX^jU_dj8JbKB<8!nT;~I(*~Kyj5xDyDpidYR3Ff2$~S+2db8mZIwdG zPGseNTeUbi<$&p^8B7Z{u8q*SAUA6BrUQ^+DFOQX*5gph+y)zwVcs8@hXY&`t-+h^ z{>C;0$e-YfiQd9#-| z^Ng+aJaho!%@w%5`8Ej@SAnoS`sDk=iy^X7%wG-!kAO7>*R$l{njIlEZ0NO$j_aWs zwj*LexrqAwg{mNj+QgL7m#OdS5YD0EJUGGs2N;$K^En6VL8R|#wO9p?l>y4}+1Z4^{v67_}qkA1Hd-*T#L3D_nY{f1UL3iIv}uzYSD`~mIMzD8!oP>XvM3l}E&vGJtK1MN73QZm zK2X9ydw4@{>PQD&-!FZLdOcjuK4d=k)N28K1A?sYam`MA)OLI@-BLGysJ!4~8|5mj|0>3+NUC`o|(|hDRZTW`|49M8~rk;#e zS4V;S?Lg=z+^;6ueJ6a zE1-0B^_mE*(wiH{3R&3*BT_7$>6(`CX=Ji^#B{opO>o&KC;KcFm8%+V-K_oG7k?U( zKDe8kfpp;>(?ZcP6JpouoFmI{jTUcm~5+Eq4)WnfwwAx8Q|0#q5#VOW#w9! z%iAP(4zkD>AKu%fgSpz&!>57dPppTFZ{D)mVGuS-}sQG3z|&h5b-oMg*u^ zVh6*&v=Y|D6s%NZs?oHi?|O_EjS4#W(HC{|O_()Tz8B%C?ew#OhSwwh`L%Yu8}fb!)ULf< z@!lp;<%1u`lGSvCIQhd^XMy9F#Jo4gY1@{^Yq=gO@fr)?oozK;od8>^M)DHHqdr)< zL+p%e&U+ShlO*(!U=O|~F)xngOQf;uqW5%`c;|#}BP6}T9tneS34ese5zNc3*ia)ye#G2cVll7WoeKz-K*dfsdm1%oo1j$~T=B-V$ z=d@)xPL>gz{-0OSz;+}sH|?=M6Rg2*h;P;`pSU*{Cci=FsqXlj!@Az%Ef*rK(-h0U z-jZtPTls)fJ_#HtSZ}Pm$k-tK#rsVo18UT{3=u)asgqu|j*8uy)ioJm_-&&$xCLlOCF{Lxi9o<8(~s9>Gj$-pd?*jLTmHX8o%d|6Pf2Vs6svx`S| zh$ryaM85oz1G0V$zF(NvX!{d%XwAe`IAbr~kP!h8luWqxON5zMVXb7z02z>mxZ{n_ zjnjF5DDOYWwDykQI2A=7+Q7X=&zELN0g zjU-Ve>A3JE?s!LYqQt|gBlkjQ(1N7JyGlkiti5|Y!=D~gEBhUGsI}cuP)_qbg-iQ+ z<>7)ZCxg>8R%C$*&kL<>saQ8P5k|E_sJsI3Gf=jes@IGRsPF2X`DKIF)dTexjSVSH z4?Vh^3hSxk3BKcv1CeARHUVF=OSt8}`{XuMESfyUSb=Mce6(NL51_NA32e|m?jqu4 zoMO$XW zmRk+73V zeQQ;hm~Ddai1Wc#{Ue)%`4Fa}8FAE|OBbRiEubV022HY>-AR~`isg)#3!US2y-%WV zTnNGrMnc;rnKu=W-E43#T~!C-Y_nR!L?6P2)-tXwUbNOW-m*sfGkj`hN1pvwgLK2h zHabb-N|<~Q7FRQoeWWp89#>JL?KK)Txu3Z;(n@1S0AG`-01th%MbGFdYc8JEcu%wU zS@Jes472ohzlZGx%Nn19;R$nf_9J)6qU4JgFM3q1HXTyKCe@}R()V8|kXNi&^g6=* zoib_80QTx}o9*zz_PNnJe25r|2V)#fgjW|>*&fqYUa#%;tD67tF}6$qc_P^KDiJNX zxh^~8!|+W=fWJN=RL8Y^z~)GpeP<9Z>1QbhRL|%*`te`rK)?jrbq2k1-d+CPi_IWp zCTnh|e##PZY2-*7%5X&J@`}B#Hver%fG7NA=oW)yP7ckcu-mOxSHC5URDz-H&Yo^cs`0{-m95QS6z2+c^=rMGE{7s)6GN{6tF{w!Qcr>4&yi-U> zQgVKC5Mjj;SQRgB#K(Uzl6iCgZ?Cq`e!+|Fc=6DYtfx&>P53`i&RigAR;C27xUpOA zlzqOfG@4b|t5YVk`0CrgUG7M|nd8{V;~VoP?Ep}Ep~t^7chXB8d{GWK#P9XZLALe9Y@&bvhaX@) zC+kOspQwkYN`ntZvdn`tw^0v6pWbCGH4PGtxc0Q zccSd;EwwnzFMLZeujyFpvj^Hd zdM1bR$hmCV#GonOyZ1S${9I?LPu^?io(#pZA-!TuB4lGBMGue;5Ol77x(+c?8h-W$ z{v#+cn|i`%m0*k|aUzI5%bTV&ek}JF@|0*3N>hm>3hx=5hoS>WX=jmpdIBb5bH0AA zoJzzV;OBlQ`?N^yV=PN_(b}uy0(|I5bQmfpj14LuBy2tsI%H3sv1ilIZ5g)aQX*fw zu(E05E?O&ciu=~d_V}>l1wg)#X;0vocb54UqKir=j5(mVgN>ETERp*yyqxV@e&l`B zT$o~*+G@QgC|D`}60Fj4X|G3*CvzA9xJ7JvJWl8mv4q$b{TL;s`5`Nq_zC4Buud1x@!WuwxKm?=%_lqRKjDnZ%dGe?q$ zO;OvB;R0#l0O~y@SG75lEWV617CD;Uxd!i0@mi8FkCX{!sk)O!r6nK{^33s#hda?W z$5q7P%%IT&B6L{!WZcIfB5zZfXh4k#Dc8|N2>VNdlRv^a`k??6n+?OB$x~-51#N}p zsa#CL#S05qqCrhhaF?7wyeLT;dqBj2pN<7Vg8xG#2I4^%Ntz8NU~+27l3eM!(MT(| zJ6pD&Fh+*F?eR`ao*~9F6!a^To`cwNSmF|D`deFd%-)Zef^S6v=Z~J0u*A+~9BXb< zN$>P7gC-#h3$S*rT21LwVm*_F7N8j-F2_Shki`=0M4`_s2xugFie$f64GDzISm$B` zwBgl*lT|p9k(u4(?a%bCR}3e@RU8dRhlO-29=rC6B`jk#b43l@A+!&*oR_LL+`$NV zjU;oJL&gN{Il?NkNKd*<6PZZDmmk7D%1b`U@2Jg94ajWBEMd1iHwFiokP05;vpm(T ztI&lRy~myh@r)_jdFo6Pd%+%HaSTdwb*Nlr;>4Y~NiuwdO*fbFA zxLgaAh-nzV^Oao?5q#rNdca6J?;&aKVKFDWB#!R><*#LB{4#Erq8C}-gNtNneSNaA8+D|?SU9c~-9ezWL zrJe{ES1ci_&v1Ib-qvh~pvOznNAR6#XU*PYtr6}s^!uVPR%X!ok~9W2 zV4TB$l;a1)5;RdQEnoU)+14ea%?UGmg`wW1l?hs|@8lNC2;uh8B_lbK5mAnRXLG_u zsvw<88Rd!~jMc&HQOsJv;`_7gg<^?_&4QG!%eus?!?{ow>(uR?kW;A+_`HG~MIA$1 zbN#^ys$&z~OafzSj=6E}!;wzvl#8TZL^prj0r6}H37aC}b<>!ogZtoEEe&R>4Fhrs z5OG+Kro}qvGN_WNV>vRo>x&=+!o8F;cPyg~!ZzmM8HfwZeEAKu8MrJ9BsQkylaJ<@ za_hB{;Hc`Ten3Std}GPRC~S{FTwXq3?$dvpUV&6hKCNDGboQYO1=hh{JFk~;aj4qVlY=38-?xkjE*Y}G_Oio z&4>VOXs9U;?aMv*@~ZZ=>aCGOPy>p_v{oL5{34TAc5OP7oTcXXd4(W|I=kf7*=LcZ z{acSw7z=RMT~!kQu>^-p8wc$U->r{<0txP8FRJXegLQtOM2_MBKZu8Tn#qBC=rZiC zXzkG$E(tZT$ZGR@Ul)fA1U(GT*;n?yArvQac&zr5M=5m%|4&szBup(k@rM?m?Tcee)k!5 zr_&<1RpUJ+1-^V|sntMBdB=K6ObdG{nTQZ2j_JAp_p-4O23;$3&>>1~B+5kU>*^wi z)RC6$gb|~#rpA;bz_QUe$E1O|<{)bWCbH})jSV0DbY^RY)mAZ-)oj36F+C@$6ggmo zX4|Qdlv++=B!lp6jH#{SPQ!r7hm-*o@^h{ro7>cCO3nfb7(06CJ#maysItVzve3CT zf#AzSvdgnqn|9o6P=C?=Mc{=7U{zscLKOhT3(wKHp^*7GB;2)AIV1?PTaf%`vbYS| zYb|9q3a3!+2|7JfDrrcKQfUv7h;cYuhi@SRa32{bu!|um>R%V6@i$A z`4a}V8#V%A%yDb?`h66T^cP(&G;3tHY$n4aha3!jV~~$j9p+y8C6+SgNX|rBC#5bz z!rub7D+7!r>A{w=*($X*IQ?l6n?weegFQtoG3e@S=4wn$Zqtj`L%N5@X6c^%9`DHI zs&|oUP#C_wDblL}`k@p>+H6&7XaYEX6ht?oDDa`Op$-;@Y^K!nNTYxF?hIs5In5iq zyPqUVh7)ZjU32omm(@!@0ZM?TtWS}6he=PtMKnd0{|>9zO?k*(QsAOh9iF(eU9cIK zV=2dKCxCWJA0=p>^bOuaA0BKLd^kc(#*5zKTPioss24*VXtsDh4m7p#NkzV;=UU%A zK~bVmn=rULtT8WPTD8Zmb|*#H#oA>TA_0%Auj@7X5u3t9Bnog$Jy*#oJvQH}{|RAS)M9%oJ;9(#ipS|c54m2Q-VsNfByECGy1aX+mO zg&}fy;)@{Ib#G^9xQhzArjy}-Mj*p3m4>qDB#}sliDRUBRuD;a7HL43Z+BlDwE>La z(Xx>2TykX6nb%gJa@1@*PSD?XfIHi^Zr zDH_rJUL_YwdWd5uakI|H!3mT;$W=97r58%?BPW{YFtyjqX(uwk{Y2MaTpLDr_$Ah7 z|3>pH6T=nfXN3O2$+J9nd)%kZ4Ux>{Ws{A!F6&Uj1hNxX5bPu!qjt zd-~A~wnKphmfK_4>KUJr5snhv9%oY765Q;rKcuB2wNG3t literal 0 HcmV?d00001 diff --git a/_images/sphx_glr_plot_direct_inversion_thumb.png b/_images/sphx_glr_plot_direct_inversion_thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..25e22a60dd345b746116bce04091d21994e86493 GIT binary patch literal 20689 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 literal 0 HcmV?d00001 diff --git a/_images/sphx_glr_plot_read_plot_mfprof_data_001.png b/_images/sphx_glr_plot_read_plot_mfprof_data_001.png new file mode 100644 index 0000000000000000000000000000000000000000..32d6f57254c4c4c2c1227f6bd3c98c8ff348ea4e GIT binary patch literal 241999 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

i6f=e~`eB}Wm*ow_G;&#*Y{G$O4J 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 literal 0 HcmV?d00001 diff --git a/_images/sphx_glr_plot_read_plot_mfprof_data_002.png b/_images/sphx_glr_plot_read_plot_mfprof_data_002.png new file mode 100644 index 0000000000000000000000000000000000000000..91b3cfa52b94e0dc92bbd7c4c7b90150a6b4590f GIT binary patch literal 264768 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

P<0jt@&8wj4f6(gwFZYq=xY-h6 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≥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 Pz>lV?o=W)x%dr0dW0A|r literal 0 HcmV?d00001 diff --git a/_images/sphx_glr_plot_read_plot_mfprof_data_thumb.png b/_images/sphx_glr_plot_read_plot_mfprof_data_thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2e76d6b67d84e99e6fd235f51764a89966e9f2 GIT binary patch literal 114544 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 literal 0 HcmV?d00001 diff --git a/_images/sphx_glr_plot_reconstruct_velocity_001.png b/_images/sphx_glr_plot_reconstruct_velocity_001.png new file mode 100644 index 0000000000000000000000000000000000000000..84e4fa6a7cc65365350a92b1d620544032cd4d5e GIT binary patch literal 14791 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 Z|1!^~Jhj((-7p$axvqJw@Tx_?{{p<+-@5<+ literal 0 HcmV?d00001 diff --git a/_images/sphx_glr_plot_reconstruct_velocity_002.png b/_images/sphx_glr_plot_reconstruct_velocity_002.png new file mode 100644 index 0000000000000000000000000000000000000000..c1560b03173a3f6cb7c724d96cfced0b20f9ef03 GIT binary patch literal 18338 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 ZrxjDGuBUhp9jLH{l9dEWREQb){ueZf*yI2J literal 0 HcmV?d00001 diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 0000000..04e4a2a --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,434 @@ + + + + + + + + + + Overview: module code — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/pyudv/attenuation/direct_models.html b/_modules/pyudv/attenuation/direct_models.html new file mode 100644 index 0000000..eb7bd87 --- /dev/null +++ b/_modules/pyudv/attenuation/direct_models.html @@ -0,0 +1,598 @@ + + + + + + + + + + pyudv.attenuation.direct_models — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for pyudv.attenuation.direct_models

+import numpy as np
+from scipy.integrate import cumulative_trapezoid
+
+
+
+[docs] +def alpha_w(f, T): + """Calculate the fresh water attenuation in m-1. + + Parameters + ---------- + f : scalar, array + Sound frequency in Hertz. + T : scalar, array + Temperature in Celsius degrees. + + Returns + ------- + scalar, array + return the fresh water attenuation in m-1. + + Examples + -------- + >>> f = 2e6 + >>> T = 25 + >>> print(alpha_w(f, T)) + + References + -------- + [1] Fisher, F. H., & Simmons, V. P. (1977). Sound absorption in sea water. The Journal of the Acoustical Society of America, 62(3), 558-564. + + """ + return ( + 10 ** (-15) + * (55.9 - 2.37 * T + 4.77 * 10 ** (-2) * T**2 - 3.48 * 10 ** (-4) * T**3) + * f**2 + )
+ + + +
+[docs] +def sound_velocity(T): + """Compute sound velocity in fresh water in [m/s] + + Parameters + ---------- + T : scalar, array + Temperature in Celsius degrees. + + Returns + ------- + scalar, array + sound velocity in fresh water in [m/s] + + Examples + -------- + >>> T = 25 + >>> print(sound_velocity(T)) + + References + -------- + [1] Lubbers, J., & Graaff, R. (1998). A simple and accurate formula for the sound velocity in water. Ultrasound in medicine & biology, 24(7), 1065-1068. + + + """ + return 1405.03 + 4.624 * T - 3.83 * 10 ** (-2) * T**2
+ + + +
+[docs] +def near_field_theoretical(r, rn): + """Return the near field function. + + Parameters + ---------- + r : scalar, array + Radial coordinate. + rn : scalar, array + Near field distance + + Returns + ------- + scalar, array + return the near field function. + + Examples + -------- + >>> r = np.linspace(0.1, 1, 100) + >>> rn = 0.2 + >>> Psi = near_field_theoretical(r, rn) + + References + -------- + [1] Downing, A., Thorne, P. D., & Vincent, C. E. (1995). Backscattering from a suspension in the near field of a piston transducer. The Journal of the Acoustical Society of America, 97(3), 1614-1620. + [2] Pedocchi, F., & García, M. H. (2012). Acoustic measurement of suspended sediment concentration profiles in an oscillatory boundary layer. Continental Shelf Research, 46, 87-95. + + + """ + # return 1 + rn**3.2/(0.43*r*rn**2.2 + 0.48*r**3.2) + return 1 + rn**3.2 / (1.35 * r * rn**2.2 + (2.5 * r) ** 3.2)
+ + + +
+[docs] +def correction_factor(r, alpha_w, Ks, Kt, psi): + r"""Compute the part of the mean squared voltage independet of the sediment concentration: :math:`\frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}}}` + + Parameters + ---------- + r : scalar, array + radial coordinate + alpha_w : scalar, array + water attenuation coefficient + Ks : scalar, array + Sediment constant. + Kt : scalar, array + Transducer constant. + psi : scalar, array + near field function. + + Returns + ------- + scalar, array + return the part of the mean squared voltage that is independent of the sediment concentration. + + """ + return np.exp(-4 * r * alpha_w) * ((Ks * Kt) / (r * psi)) ** 2
+ + + +
+[docs] +def create_MSvoltage(C, r, Xi, alpha_w, Ks, Kt, psi): + r"""Compute the mean squared voltage from a concentration profile, given a set of acoustic coefficients: :math:`\langle V^{2} \rangle = C \frac{K_{\textup{s}} K_{\textup{t}}}{\psi r}^{2}e^{-4r\alpha_{\textup{w}} - \int_{0}^{r}\xi C dr}` + + Parameters + ---------- + C : scalar, array + Sediment concentration. + r : scalar, array + Radial coordinate. + Xi : scalar, array + sediment attenuation constant + alpha_w : scalar, array + water attenuation coefficient + Ks : scalar, array + Sediment constant. + Kt : scalar, array + Transducer constant. + psi : scalar, array + near field function. + + + Returns + ------- + scalar, array + Mean squared voltage. + >>> + + """ + if Xi == 0: + integral = 0 + else: + integral = cumulative_trapezoid(Xi * C + 0 * r, r + 0 * C, initial=0) + factor = correction_factor(r, alpha_w, Ks, Kt, psi) + return C * np.exp(-4 * integral) * factor
+ +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/pyudv/attenuation/inversion.html b/_modules/pyudv/attenuation/inversion.html new file mode 100644 index 0000000..5b9d8d0 --- /dev/null +++ b/_modules/pyudv/attenuation/inversion.html @@ -0,0 +1,565 @@ + + + + + + + + + + pyudv.attenuation.inversion — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for pyudv.attenuation.inversion

+import numpy as np
+import scipy.integrate as scipyint
+import scipy.interpolate as scipyinter
+
+from pyudv.attenuation.direct_models import correction_factor
+
+r"""
+Explicit inversion scheme --
+"""
+
+
+def _explicit_solution_form(f, B, Xi, r):
+    integral = scipyint.cumulative_trapezoid(f, r, initial=0)
+    return f / (B - 4 * Xi * integral), f
+
+
+
+[docs] +def explicit_inversion( + MSV: np.ndarray, + r: np.ndarray, + Xi: float, + alpha_w: float, + psi: np.ndarray, + C0: float | np.ndarray, + r0: float, + delta_r: float = None, + n_interp: int = 1000, + kind: str = "cubic", +) -> tuple[np.ndarray, np.ndarray]: + r""" + Use the following explicit solution to infer particle concentration from Mean Square Voltage (MSV, :math:`\langle V^{2} \rangle`) data: + + .. math:: + + C(r) = \frac{f}{B - 4\xi\displaystyle\int^{r}f}, + + where + + .. math:: + + f(r) = \langle V^{2} \rangle \left(\frac{r\psi_{(r)}}{K_{\rm s} K_{\rm t}}\right) e^{4r\alpha_{\rm w}} = Ce^{-4\alpha_{\rm s}}. + + Parameters + ---------- + MSV : np.ndarray + Input array containing :math:`\langle V^{2} \rangle` data. If 1D, must be the same size as `r`. If 2D, its last dimension must match the size of `r`. + r : np.ndarray + Radial distance to the probe array. Must be 1D, and match the last dimension of `MSV`. + Xi : float + sediment asborption coefficient. + alpha_w : float + water absorption coefficient. + psi : np.ndarray + Near-field function. Must be 1D, and match the last dimension of `MSV`. + C0 : float | np.ndarray + Reference concentration. Can be a float, or a 1D array matching the first dimension of `MSV`. + r0 : float + Reference distance corresponding to `C0`. + delta_r : float, optional + If not None, the reference concentration is then interpreted as an average between :math:`r-\delta r` and :math:`r+\delta r` (by default None). + n_interp : int, optional + Number of point used in the interpolation of the input signal, by default 1000. It is advise to vary this parameter to find its lowest value above which the result becomes independant of it. + kind : str, optional + Interpolation method used, by default "cubic". Refer to the documentation of :func:`interp1d <scipy.interpolate.interp1d>`. + + Returns + ------- + C : np.ndarray + Inferred concentration. + f : np.ndarray + Integrated array during the procedure. Returned to check the order of magnitudes over wich the integration is performed, and check possible numerical precision errors. + """ + + r_expanded = np.expand_dims( + np.squeeze(r), axis=tuple(np.arange(len(MSV.shape[:-1]))) + ) + psi_expanded = np.expand_dims( + np.squeeze(psi), axis=tuple(np.arange(len(MSV.shape[:-1]))) + ) + C0_expanded = C0 if np.isscalar(C0) else np.squeeze(C0)[..., None] + # + # ## calculating MSV reduced of factor + factor = correction_factor(r_expanded, alpha_w, 1, 1, psi_expanded) + f = MSV / factor + interp_f = scipyinter.interp1d(r, f, axis=-1, kind=kind) + # ## calculating adjustable constant with imposed point + r_new = np.linspace(r.min(), r0, n_interp) + if delta_r is None: # if single fixed point + constant_int = scipyint.trapezoid(interp_f(r_new), r_new)[..., None] + constant_MSV = interp_f(r0)[..., None] + B = constant_MSV / C0_expanded + 4 * Xi * constant_int + else: # if averaged within delta_r + r_new = np.linspace(r.min(), r0 + delta_r, n_interp) + constant_int_pos = scipyint.trapezoid(interp_f(r_new), r_new)[..., None] + # + r_new = np.linspace(r.min(), r0 - delta_r, n_interp) + constant_int_neg = scipyint.trapezoid(interp_f(r_new), r_new)[..., None] + # + B = ( + 4 + * Xi + * ( + constant_int_pos + - np.exp(-8 * delta_r * Xi * C0_expanded) * constant_int_neg + ) + / (1 - np.exp(-8 * delta_r * Xi * C0_expanded)) + ) + return _explicit_solution_form(f, B, Xi, r_expanded)
+ + + +# +# def explicit_inversion(MSV, r, Xi, alpha_w, psi, C0, r0): +# r_expanded = np.expand_dims(r, axis=tuple(np.arange(len(MSV.shape[:-1])))) +# psi_expanded = np.expand_dims(psi, axis=tuple(np.arange(len(MSV.shape[:-1])))) +# C0_expanded = np.expand_dims(C0, axis=-1) +# # +# factor = correction_factor(r_expanded, alpha_w, 1, 1, psi_expanded) +# MSV_reduced = MSV/factor +# # +# integral = cumulative_trapezoid(MSV_reduced, r_expanded, initial=0) +# if np.isscalar(r0): +# ind_r0 = np.arange(r.size)[r <= r0][-1] +# constant_int = trapezoid(MSV_reduced[..., :ind_r0], r_expanded[..., :ind_r0]) +# return C0_expanded*MSV_reduced/(MSV_reduced[..., ind_r0:ind_r0 + 1] - C0_expanded*4*Xi*(integral - constant_int[..., None])) +# else: +# r_temp = np.broadcast_to(r_expanded, MSV_reduced.shape) +# MSV_zeroed = np.where(r_temp <= r0[..., None], MSV_reduced, 0) +# del r_temp +# constant_int = trapezoid(MSV_zeroed, r_expanded) +# del MSV_zeroed +# # +# ind_r0 = np.argmin(np.abs(r0[..., None] - r_expanded), axis=-1) +# constant_MSV = np.take_along_axis(MSV_reduced, ind_r0[..., None], axis=-1) +# del ind_r0 +# return C0_expanded*MSV_reduced/(constant_MSV - C0_expanded*4*Xi*(integral - constant_int[..., None])) +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/pyudv/attenuation/sediment_acoustic_models/glass_sphere.html b/_modules/pyudv/attenuation/sediment_acoustic_models/glass_sphere.html new file mode 100644 index 0000000..a894d97 --- /dev/null +++ b/_modules/pyudv/attenuation/sediment_acoustic_models/glass_sphere.html @@ -0,0 +1,464 @@ + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.glass_sphere — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for pyudv.attenuation.sediment_acoustic_models.glass_sphere

+import numpy as np
+from scipy.integrate import trapezoid
+
+
+
+[docs] +def Chi_i(k, Rp): + x = k * Rp + phi = 1 - 0.4 * np.exp(((x - 5.5) / 0.7) ** 2) + return (0.24 * phi * x**4) / ( + 0.7 + 0.3 * x + 2.1 * x**2 - 0.7 * x**3 + 0.3 * x**4 + )
+ + + +
+[docs] +def Chi(k, Rp): + if np.isscalar(Rp): + return Chi_i(k, Rp) + else: + trapezoid(Rp[0] * Rp[1], Rp[0]) * trapezoid( + Rp[0] ** 2 * Chi_i(k, Rp[0]) * Rp[1], Rp[0] + ) / trapezoid(Rp[0] ** 3 * Rp[1], Rp[0])
+ + + +
+[docs] +def Xi(k, Rp): + if np.isscalar(Rp): + return 3 * Chi(k, Rp) / (4 * Rp) + else: + a0 = trapezoid(Rp[0] * Rp[1], Rp[0]) # mean value + return 3 * Chi(k, Rp) / (4 * a0)
+ +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/pyudv/attenuation/sediment_acoustic_models/quartz_sand.html b/_modules/pyudv/attenuation/sediment_acoustic_models/quartz_sand.html new file mode 100644 index 0000000..9662041 --- /dev/null +++ b/_modules/pyudv/attenuation/sediment_acoustic_models/quartz_sand.html @@ -0,0 +1,467 @@ + + + + + + + + + + pyudv.attenuation.sediment_acoustic_models.quartz_sand — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for pyudv.attenuation.sediment_acoustic_models.quartz_sand

+import numpy as np
+from scipy.integrate import trapezoid
+
+# def Chi_i(k, Rp):
+#     x = k*Rp
+#     return (0.09*x**4/(1380 + 560*x**2 + 150*x**4))
+
+
+
+[docs] +def Chi_i(k, Rp): + x = k * Rp + return (1.1 * (4 / 3) * 0.18 * x**4) / ( + 1 + 1.3 * x**2 + (4 / 3) * 0.18 * x**4 + )
+ + + +
+[docs] +def Chi(k, Rp): + if np.isscalar(Rp): + return Chi_i(k, Rp) + else: + trapezoid(Rp[0] * Rp[1], Rp[0]) * trapezoid( + Rp[0] ** 2 * Chi_i(k, Rp[0]) * Rp[1], Rp[0] + ) / trapezoid(Rp[0] ** 3 * Rp[1], Rp[0])
+ + + +
+[docs] +def Xi(k, Rp, rho=2.65 * 1e3): + if np.isscalar(Rp): + return 3 * Chi(k, Rp) / (4 * Rp * rho) + else: + a0 = trapezoid(Rp[0] * Rp[1], Rp[0]) # mean value + return 3 * Chi(k, Rp) / (4 * a0 * rho)
+ +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/pyudv/geometry.html b/_modules/pyudv/geometry.html new file mode 100644 index 0000000..e842154 --- /dev/null +++ b/_modules/pyudv/geometry.html @@ -0,0 +1,838 @@ + + + + + + + + + + pyudv.geometry — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for pyudv.geometry

+"""
+This module helps you deal with probe geometries.
+"""
+
+import matplotlib.axes as mplaxes
+import matplotlib.pyplot as plt
+import numpy as np
+import numpy.typing as npt
+import scipy.interpolate as scipyinterp
+
+import pyudv.helpers as ph
+
+
+
+[docs] +class Probe: + """ + A class used to represent a single probe. + + Parameters + ---------- + r : ndarray, (N,) + a numpy array containing the radial coordinates of the beam. + alpha : float + orientation of the probe, in degree in the trigonometric referential. + Pref : list[float, ndarray] + A list a size 2 defining a reference point by containing its radial coordinate, and a numpy array containing its coordinate in the "real" reference space. + """ + + def __init__( + self, + r: np.ndarray, + alpha: float, + Pref: list[float, np.ndarray], + ) -> None: + """ + Parameters + ---------- + r : ndarray + a numpy array containing the radial coordinates of the beam. + alpha : float + orientation of the probe, in degree in the trigonometric referential. + Pref : list[float, ndarray] + A list a size 2 defining a reference point by containing its radial coordinate, and a numpy array containing its coordinate in the "real" reference space. + """ + + self.r = r #: vector along beam axis + self.alpha = alpha #: beam axis inclination, trigo referential + self.Pref = Pref #: reference point [r_ref, (x_ref, y_ref)] + # + self.r_ref = self.Pref[0] #: reference point radial coordinats + self.X_ref = self.Pref[1] #: reference point real coordinates + self.unit_vec = np.array([np.cos(np.radians(alpha)), np.sin(np.radians(alpha)) + ]) #: unit vector defining the beam direction in real coordinates + self.O = (Pref[1] - Pref[0] * self.unit_vec) #: coordinates of the origin of the beam + self.E = (self.X_ref + (r.max() - self.r_ref) * self.unit_vec) #: coordinates of the end of the beam + + # Beam coordinates + self.x = self.r_to_x(self.r) + self.z = self.r_to_z(self.r) + +
+[docs] + def r_to_z(self, r: np.ndarray | float) -> np.ndarray | float: + """ + Convert radial coordinates of the probe into z coordinates + + Parameters + ---------- + r : np.ndarray | float + radial coordinate + + Returns + ------- + np.ndarray | float + corresponding z coordinate + """ + return self.O[1] + r * self.unit_vec[1]
+ + +
+[docs] + def r_to_x(self, r: np.ndarray | float) -> np.ndarray | float: + """ + Convert radial coordinates of the probe into x coordinates + + Parameters + ---------- + r : np.ndarray | float + corresponding x coordinate + + Returns + ------- + np.ndarray | float + corresponding z coordinate + """ + return self.O[0] + r * self.unit_vec[0]
+ + +
+[docs] + def xz_to_r(self, xz: np.ndarray, axis=-1) -> np.ndarray: + """ + Convert xz coordinates into probe radial coordinates + + Parameters + ---------- + xz : np.ndarray + xz coordinate + axis : int, optional + axis along which the norm is calculated, by default -1 + + Returns + ------- + np.ndarray + radial coordinates + """ + return np.linalg.norm(xz - self.O, axis=axis)
+ + +
+[docs] + def plot_probe(self, ax: mplaxes.Axes, color: str = None): + """ + Sketch the probe and its beam on a given matplotlib axe. + + Parameters + ---------- + ax : mplaxes.Axes + matplotlib axe on which the probe is sketched. + color : str, optional + probe color, by default None + """ + a = ax.scatter(self.O[0], self.O[1], color=color) + # plot unused beam part + (a, ) = ax.plot([self.O[0], self.x[0]], [self.O[1], self.z[0]], + color=a.get_facecolor(), + ls="--", + lw=1, + alpha=0.3) + # plot used beam part + (a, ) = ax.plot( + [self.x[0], self.E[0]], + [self.z[0], self.E[1]], + color=a.get_color(), + ls="--", + lw=1, + ) + ax.annotate( + "", + xytext=self.O, + xy=self.O + np.linalg.norm((self.E - self.O)) / 10 * self.unit_vec, + arrowprops=dict(arrowstyle="->", color=a.get_color()), + )
+
+ + + +
+[docs] +def sketch_probes( + probes: list[Probe], + combinations: list[tuple[int, int]] = None, + ax: mplaxes.Axes = None, + probe_colors: list[str] = None, + combination_colors: list[str] = None, +): + """ + Sketch multiple probes, and optionaly their intersections, etc ... + + Parameters + ---------- + probes : list[Probe] + list of :class:`Probe <pyudv.probes.Probe>` object to be sketched. + combinations : list[tuple[int, int]], optional + list of tuple of size 2 containing indexes of `probes` whose intersection should be sketched. + ax : mplaxes.Axes, optional + matplotlib axe on which the sketch is drawn. If None, a new figure is created (default is None). + probe_colors : list[str], optional + list of colors for the probes, by default None. It should be the same size as `probes`. + combination_colors : list[str], optional + list of colors for the intersetctions, by default None. It should be the same size as `combinations`. + """ + if ax is None: + fig, ax = plt.subplots(1, 1, layout="constrained") + ax.set_aspect("equal") + # + if probe_colors is None: + probe_colors = [None for i in probes] + if (combinations is not None) and (combination_colors is None): + combination_colors = [None for i in combinations] + # + # plot probes + for probe, color in zip(probes, probe_colors): + probe.plot_probe(ax, color=color) + if combinations is not None: + for combination, combination_color in zip(combinations, combination_colors): + probe1, probe2 = probes[combination[0]], probes[combination[1]] + X = probe_crossing_point(probe1, probe2) + ax.scatter(X[0], X[1], color=combination_color) + # + z_interp, z_min, z_max = compute_vertical_axis(probe1, probe2) + ax.plot([X[0], X[0]], [z_min, z_max], color=combination_color)
+ + + +
+[docs] +def probe_crossing_point(probe1: Probe, probe2: Probe) -> np.ndarray: + """ + calculate the crossing point of two probe beams. + + Parameters + ---------- + probe1 : Probe + First :class:`Probe <pyudv.probes.Probe>` object. + probe2 : Probe + Second :class:`Probe <pyudv.probes.Probe>` object. + + Returns + ------- + ndarray, (2. ) + coordinates of the crossing point. + """ + M = np.array([-probe1.unit_vec, probe2.unit_vec]).T + S = probe1.O - probe2.O + T = np.linalg.inv(M) @ S + X = probe1.O + T[0] * probe1.unit_vec + return X
+ + + +
+[docs] +def compute_vertical_axis(probe1: Probe, probe2: Probe): + """ + compute the common vertical axis between two probe beams. + + Parameters + ---------- + probe1 : Probe + First :class:`Probe <pyudv.probes.Probe>` object. + probe2 : Probe + Second :class:`Probe <pyudv.probes.Probe>` object. + + Returns + ------- + z_interp : ndarray + numpy array containg the vertical coordinates of the common axis. + z_min : float + minimal vertical coordinate + z_max : float + maximal vertical coordinate + """ + return ph.compute_common_part(probe1.z, probe2.z)
+ + + +
+[docs] +def reconstruct_velocity( + u1: npt.ArrayLike, u2: npt.ArrayLike, probe1: Probe, + probe2: Probe) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """ + This function takes the velocities measured by two probes, and reconstruct the velocity field, assuming that it only depends on the vertical coordinate. + + Parameters + ---------- + u1 : ArrayLike + velocity vector measured by first probe. The first dimension should be the same dimension as the radial coordinate contained in `probe1.z`. + u2 : ArrayLike + velocity vector measured by second probe. The first dimension should be the same dimension as the radial coordinate contained in `probe2.z`. + probe1 : Probe + First :class:`Probe <pyudv.probes.Probe>` object. + probe2 : Probe + Second :class:`Probe <pyudv.probes.Probe>` object. + + Returns + ------- + U : ndarray + reconstructed velocity components in the coordinate system corresponding to the one of the reference points of the probes. + z_interp : ndarray + coordinate vector corresponding to `U` + X : ndarray + crossing point of the probes + dx_1 : ndarray + horizontal distance between the first probe beam, and the vertical axis passing by the crossing point `X` + dx_2 : ndarray + horizontal distance between the second probe beam, and the vertical axis passing by the crossing point `X` + + """ + # # Build common vertical axis + z_interp, _, _ = compute_vertical_axis(probe1, probe2) + # # interpolating velocity + interp1 = scipyinterp.interp1d(probe1.z, u1, axis=0) + interp2 = scipyinterp.interp1d(probe2.z, u2, axis=0) + # + u1_interp = interp1(z_interp) + u2_interp = interp2(z_interp) + # + # velocity reconstruction + M = np.array([probe1.unit_vec, probe2.unit_vec]) + # U = np.linalg.inv(M) @ np.array([u1_interp, u2_interp]) + U = np.einsum("ij, jk... -> ik...", np.linalg.inv(M), np.array([u1_interp, u2_interp])) + # + # # other quantities + # crossing point + X = probe_crossing_point(probe1, probe2) + # horizontal distances to the vertical axis passing by the crossing point + dx_1 = np.tan(np.radians(probe1.alpha)) * (z_interp - X[1]) + dx_2 = np.tan(np.radians(probe2.alpha)) * (z_interp - X[1]) + return U, z_interp, X, dx_1, dx_2
+ + + +
+[docs] +def average_amplitude(a1: npt.ArrayLike, a2: npt.ArrayLike, probe1: Probe, + probe2: Probe) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """ + This function takes the amplitude measured by two probes and average them, assuming that it only depends on the vertical coordinate. + + Parameters + ---------- + a1 : npt.ArrayLike + amplitude measured by first probe. The first dimension should be the same dimension as the radial coordinate contained in `probe1.z`. + a2 : npt.ArrayLike + amplitude measured by second probe. The first dimension should be the same dimension as the radial coordinate contained in `probe2.z`. + probe1 : Probe + First :class:`Probe <pyudv.probes.Probe>` object. + probe2 : Probe + Second :class:`Probe <pyudv.probes.Probe>` object. + + Returns + ------- + A : ndarray + averaged amplitud in the coordinate system corresponding to the one of the reference points of the probes. + z_interp : ndarray + coordinate vector corresponding to `U` + X : ndarray + crossing point of the probes + dx_1 : ndarray + horizontal distance between the first probe beam, and the vertical axis passing by the crossing point `X` + dx_2 : ndarray + horizontal distance between the second probe beam, and the vertical axis passing by the crossing point `X` + + """ + # # Build common vertical axis + z_interp, _, _ = compute_vertical_axis(probe1, probe2) + # # interpolating velocity + interp1 = scipyinterp.interp1d(probe1.z, a1, axis=0) + interp2 = scipyinterp.interp1d(probe2.z, a2, axis=0) + # + a1_interp = interp1(z_interp) + a2_interp = interp2(z_interp) + # + # # other quantities + # crossing point + X = probe_crossing_point(probe1, probe2) + # horizontal distances to the vertical axis passing by the crossing point + dx_1 = np.tan(np.radians(probe1.alpha)) * (z_interp - X[1]) + dx_2 = np.tan(np.radians(probe2.alpha)) * (z_interp - X[1]) + return (a1_interp+a2_interp) / 2, z_interp, X, dx_1, dx_2
+ + + +if __name__ == "__main__": + # + # # Test Probe object definition + r = np.linspace(0, 5, 100) + alpha1, alpha2 = -120, -70 # deg + O1, O2 = np.array([1, 8]), np.array([-1, 7]) + probe1_pars = [r, alpha1, [0, O1]] + probe2_pars = [r, alpha2, [0, O2]] + # + probe1 = Probe(*probe1_pars) + probe2 = Probe(*probe2_pars) + # + sketch_probes( + [probe1, probe2], + combinations=[[0, 1]], + probe_colors=[None, None], + combination_colors=["k"], + ) + + # #### Test velocity reconstruction + def U(z): + u = 5 * (5 - z)**2 + v = u / 10 + U = np.array([u, v]) + return U + + # + # make fake signals + u1 = U(probe1.z).T @ probe1.unit_vec + u2 = U(probe2.z).T @ probe2.unit_vec + # + # #### reconstruction + U_rec, z_interp, X, dx_1, dx_2 = reconstruct_velocity(u1, u2, probe1, probe2) + U_th = U(z_interp) + # + fig, axarr = plt.subplots(1, 2, layout="constrained", sharey=True) + for ax, u_th, u_rec in zip(axarr, U_th, U_rec): + ax.plot(u_th, z_interp, ".", label="base") + ax.plot(u_rec, z_interp, ".", label="reconstructed") + ax.legend() + axarr[0].set_xlabel("u") + axarr[1].set_xlabel("v") + axarr[0].set_ylabel("z") + plt.show() +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/pyudv/helpers.html b/_modules/pyudv/helpers.html new file mode 100644 index 0000000..9279d98 --- /dev/null +++ b/_modules/pyudv/helpers.html @@ -0,0 +1,529 @@ + + + + + + + + + + pyudv.helpers — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for pyudv.helpers

+import os
+
+import numpy as np
+from scipy.ndimage import uniform_filter, uniform_filter1d
+
+
+
+[docs] +def moving_std1d(arr, windows, axis=-1, **kwargs): + """Rolling standard deviation on 1 dimension of the input array. + + Parameters + ---------- + arr : array + Input array + windows : int + windows over wich the standard deviation is calculated. + axis : int + axis along which the standard deviation is calculated. (the default is -1). + **kwargs : + Optional parameters passed to `scipy.ndimage.uniform_filter1d` + + Returns + ------- + array + Array of standard deviation + + """ + # based on https://stackoverflow.com/a/18422519/9530017 + c1 = uniform_filter1d(arr, windows, mode="constant", axis=axis, **kwargs) + c2 = uniform_filter1d(arr * arr, windows, mode="constant", axis=axis, **kwargs) + return (c2 - c1*c1)**0.5
+ + + +
+[docs] +def moving_std(arr, size, **kwargs): + """Rolling standard deviation on n-dimensional arrays. + + Parameters + ---------- + arr : array + Input array + size : int + The sizes of the uniform filter are given for each axis as a sequence, or as a single number, in which case the size is equal for all axes. + **kwargs : + Optional parameters passed to `scipy.ndimage.uniform_filter` + + Returns + ------- + array + Array of standard deviation + + """ + # based on https://stackoverflow.com/a/18422519/9530017 + c1 = uniform_filter(arr, size, mode="constant", **kwargs) + c2 = uniform_filter(arr * arr, size, mode="constant", **kwargs) + return (c2 - c1*c1)**0.5
+ + + +
+[docs] +def compute_common_part(vec1: np.ndarray, vec2: np.ndarray) -> tuple[np.ndarray, float, float]: + """ + Compute the common part between two vector, and return it. If it is not exactly colocated, it returns a interpolation with the same number of points betwen the bounds common to the two arrays. + + Parameters + ---------- + vec1 : np.ndarray + first 1D array. + vec2 : np.ndarray + second 1D array. + + Returns + ------- + z_interp: np.ndarray + interpolated vector + z_min: float + lower bound + z_max: float + higher bound + """ + z_min = np.nanmax([np.nanmin(vec1), np.nanmin(vec2)]) + z_max = np.min([np.nanmax(vec1), np.nanmax(vec2)]) + n_pts = (((vec1 <= z_max) & (vec1 >= z_min)).sum() + ((vec2 <= z_max) & (vec2 >= z_min)).sum()) / 2 + z_interp = np.linspace(z_min, z_max, int(n_pts)) + return z_interp, z_min, z_max
+ + + +
+[docs] +def create_arboresence(path): + # Create all arborescence present in path if directories does not exist. Otherwise leave them unaltered. + if not os.path.exists(path): + if path[-1] != os.sep: + path += os.sep + os.makedirs(path[:path.rindex(os.path.sep)], exist_ok=True)
+ +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/pyudv/read_mfprof.html b/_modules/pyudv/read_mfprof.html new file mode 100644 index 0000000..a1f8438 --- /dev/null +++ b/_modules/pyudv/read_mfprof.html @@ -0,0 +1,1007 @@ + + + + + + + + + + pyudv.read_mfprof — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for pyudv.read_mfprof

+"""
+This module allows you to read `.mfprof` files from Met-Flow UDVs, and extract the contained data.
+
+"""
+
+import numpy as np
+import netCDF4
+
+Types = {
+    "Frequency": np.int32,
+    "StartChannel": np.float64,
+    "ChannelDistance": np.float64,
+    "ChannelWidth": np.float64,
+    "MaximumDepth": np.float64,
+    "SoundSpeed": np.int32,
+    "Angle": int,
+    "GainStart": np.int32,
+    "GainEnd": np.int32,
+    "Voltage": np.int32,
+    "Iterations": np.int32,
+    "NoiseLevel": np.int32,
+    "CyclesPerPulse": np.int32,
+    "TriggerMode": np.int32,
+    "TriggerModeName": str,
+    "ProfileLength": np.int32,
+    "ProfilesPerBlock": np.int32,
+    "Blocks": np.int32,
+    "AmplitudeStored": int,
+    "DoNotStoreDoppler": int,
+    "RawDataMin": int,
+    "RawDataMax": int,
+    "RawDataRange": np.int32,
+    "AmplDataMin": int,
+    "AmplDataMax": int,
+    "VelocityInterpretingMode": int,
+    "UserSampleTime": int,
+    "SampleTime": np.int32,
+    "UseMultiplexer": int,
+    "FlowMapping": int,
+    "FirstValidChannel": np.int32,
+    "LastValidChannel": np.int32,
+    "FlowRateType": int,
+    "PeriodEnhOffset": np.int32,
+    "PeriodEnhPeriod": np.int32,
+    "PeriodEnhNCycles": np.int32,
+    "Comment": str,
+    "MeasurementProtocol": str,
+    "NumberOfCycles": np.int32,
+    "CycleDelay": np.int32,
+    "Version": np.int32,
+    "Table": str,
+    "CalcOffsetPulsesCount": np.int32,
+    "MultiplexerUsingType": str,
+}
+
+Base_units = {
+    "Frequency": "Hz",
+    "StartChannel": "mm",
+    "ChannelDistance": "mm",
+    "ChannelWidth": "mm",
+    "MaximumDepth": "mm",
+    "SoundSpeed": "m/s",
+    "Angle": "int",
+    "GainStart": "int",
+    "GainEnd": "int",
+    "Voltage": "V",
+    "Iterations": "int",
+    "NoiseLevel": "int",
+    "CyclesPerPulse": "int",
+    "TriggerMode": "index",
+    "TriggerModeName": "text",
+    "ProfileLength": "nChannels",
+    "ProfilesPerBlock": "nSamples",
+    "Blocks": "int",
+    "AmplitudeStored": "bool",
+    "DoNotStoreDoppler": "-",
+    "RawDataMin": "int",
+    "RawDataMax": "int",
+    "RawDataRange": "int",
+    "AmplDataMin": "int",
+    "AmplDataMax": "int",
+    "VelocityInterpretingMode": "int",
+    "UserSampleTime": "bool",
+    # 'SampleTime': 'int',
+    "SampleTime": "ms",
+    "UseMultiplexer": "bool",
+    "FlowMapping": "bool",
+    "FirstValidChannel": "int",
+    "LastValidChannel": "int",
+    "FlowRateType": "bool",
+    "PeriodEnhOffset": "int",
+    "PeriodEnhPeriod": "int",
+    "PeriodEnhNCycles": "int",
+    "Comment": "text",
+    "MeasurementProtocol": "text",
+    "NumberOfCycles": "int",
+    "CycleDelay": "int",
+    "Version": "int",
+    "Table": "int",
+    # switched from np.int32 to str due to problem loading files with multiplexing
+    "CalcOffsetPulsesCount": "int",
+    "MultiplexerUsingType": "int",
+}
+
+Absolute_gains = {
+    0.5: {
+        3: 2.17,
+        4: 4.41,
+        5: 8.82,
+        6: 16.67,
+        7: 33.33,
+        8: 60.00,
+        9: 150.00
+    },
+    1: {
+        3: 2.17,
+        4: 4.41,
+        5: 8.82,
+        6: 16.67,
+        7: 33.33,
+        8: 60.00,
+        9: 150.00
+    },
+    2: {
+        3: 0.91,
+        4: 1.76,
+        5: 3.41,
+        6: 6.67,
+        7: 15.00,
+        8: 25.00,
+        9: 60.00
+    },
+    4: {
+        3: 0.91,
+        4: 1.76,
+        5: 3.41,
+        6: 6.67,
+        7: 15.00,
+        8: 25.00,
+        9: 60.00
+    },
+    8: {
+        3: 0.65,
+        4: 1.36,
+        5: 2.80,
+        6: 5.26,
+        7: 11.11,
+        8: 23.08,
+        9: 42.86
+    },
+}
+
+
+
+[docs] +def read_mfprof(fileName: str, SI_units: bool = True, convert_time: bool = True): + """Read .mfprof binary files of the Met-Flow UDV. This is mostly a direct python translation of the matlab script given by Met-Flow. + + Parameters + ---------- + fileName : str + Path to the .mfprof file. + SI_units : bool + If `True`, convert units to the international system (the default is True). + convert_time : bool + If True, convert the time vector into seconds (the default is True). + + Returns + ------- + Data : dict + Dictionnary with the data stored in the mprof files. Available keys are: 'transducer', 'profileTime', 'DopplerData', 'AmplitudeData', 'DistanceAlongBeam' + Parameters : dict + Dictionnary with the parameters used in the UVP software when sampling the data. See UVP documentation for detail. Keys are: 'Frequency', 'StartChannel', 'ChannelDistance', 'ChannelWidth', 'MaximumDepth', 'SoundSpeed', 'Angle', 'GainStart', 'GainEnd', 'Voltage', 'Iterations', 'NoiseLevel', 'CyclesPerPulse', 'TriggerMode', 'TriggerModeName', 'ProfileLength', 'ProfilesPerBlock', 'Blocks', 'AmplitudeStored', 'DoNotStoreDoppler', 'RawDataMin', 'RawDataMax', 'RawDataRange', 'AmplDataMin', 'AmplDataMax', 'VelocityInterpretingMode', 'UserSampleTime', 'SampleTime', 'UseMultiplexer', 'FlowMapping', 'FirstValidChannel', 'LastValidChannel', 'FlowRateType', 'PeriodEnhOffset', 'PeriodEnhPeriod', 'PeriodEnhNCycles', 'Comment', 'MeasurementProtocol', 'NumberOfCycles', 'CycleDelay', 'Version', 'Table' + Infos: dict + Dictionnary with some informations stored during sampling of the data. Keys are 'Signum', 'measParamsOffset', 'nProfiles', 'reserved1', 'flags', 'recordSize', 'nChannels', 'reserved2', 'startTime'. + Units: dict + Dictionnary with the units of the variables stored in the other dictionnaries. Keys are the name of the variables. + + """ + Infos = {} + Parameters = {} + Data = {} + with open(fileName, mode="rb") as file: # b is important -> binary + ############################################################################ + # ######################## File HEADER ##################################### + ############################################################################ + # Met-Flow 64-symbol file type signature + Infos["Signum"] = np.fromfile(file, np.uint8, 64) # char 64 + # 64-bit number giving position of beginning of Measurement Parameters + Infos["measParamsOffset"] = np.fromfile(file, np.int64, 1) + # Number of profiles saved in the file + Infos["nProfiles"] = np.fromfile(file, np.int32, 1) + # Always 0 parameter + Infos["reserved1"] = np.fromfile(file, np.int32, 1) + # Flag. If this is set (=1) then Profiles also contain Amplitude Infos + Infos["flags"] = np.fromfile(file, np.int32, 1) + # Size of Infos in a single Profile + Infos["recordSize"] = np.fromfile(file, np.int32, 1) + # Number of Infos channels in a single Profile + Infos["nChannels"] = np.fromfile(file, np.int32, 1) + # Always 0 parameter + Infos["reserved2"] = np.fromfile(file, np.int32, 1) + # Time of measurement of the start(first profile) in the format FILETIME (Win32) structure. + Infos["startTime"] = np.fromfile(file, np.int64, 1) + + ############################################################################ + # ######### PROFILES - Read contents of PROFILES BLOCK ##################### + ############################################################################ + + # Profile information (in 0 to 255, 8-bit)values follow immediately after + # Profile header. Profiles consists of nProfiles Doppler Infos and if flags = 1 + # then profile also contain Amplitude Infos. Each block consists of: + # Profile Header, Doppler Infos and Amplitude Infos. This information must be + # read nProfiles times. + + # First, we allocate memory space for faster file reading + Data["transducer"] = np.zeros((Infos["nProfiles"][0], )) + Data["profileTime"] = np.zeros((Infos["nProfiles"][0], )) + Data["DopplerData"] = np.zeros((Infos["nChannels"][0], Infos["nProfiles"][0])) + Data["AmplitudeData"] = np.zeros((Infos["nChannels"][0], Infos["nProfiles"][0])) + + # READ CONTENTS FROM BLOCK nProfiles TIMES + for i in range(Infos["nProfiles"][0]): + # PROFILE HEADER BLOCK + # Always 0 not used + _ = np.fromfile(file, np.int32, 1) # status + # Data['transducer'] number -reads which Data['transducer'] Infos comes from + Data["transducer"][i] = np.fromfile(file, np.int32, 1) + # Time of measurement of the profile in 100 ns increments + Data["profileTime"][i] = np.fromfile(file, np.int64, 1) + # DOPPLER Infos BLOCK + # Doppler Infos block contains nChannels Int16 Doppler values from UVP + Data["DopplerData"][:, i] = np.fromfile(file, np.int16, Infos["nChannels"][0]) + # AMPLITUDE Infos BLOCK + # Amplitude Infos block contains nChannels Int16 Amplitude values from UVP + if Infos["flags"]: # Read Infos if it exists + Data["AmplitudeData"][:, i] = np.fromfile(file, np.int16, Infos["nChannels"][0]) + + ############################################################################ + # ##### UVP PARAMETER - Read the UVP Parameters into a Matlab struct ###### + ############################################################################ + + # UVP Measurement Parameters are stored at measParamsOffset position. Measurement + # Parameters are saved in text form. Values of parameters are saved in a form: + # parameter name=parameter value. Each parameter is given in one line. In case of + # text values including more lines, at the end of line (with the exception of the last + # line) a symbol '\' is added. E.g. comment including two lines: + # "An example of forwards-backwards oscillating 'piston' flow + # Piston action starts only after Profile 110" will be saved as: + # Comment=An example of forwards-backwards oscillating 'piston' flow.\ + # Piston action starts only after Profile 110. + # Measurement Parameters consist of two blocks: + # 1. UVP Parameters, and 2. and Multiplexer Parameters if present + + # READ CONTENTS FROM UVP PARAMETER BLOCK + # Find position of Measurement Parameters start location + file.seek(Infos["measParamsOffset"][0], 0) + _ = np.fromfile(file, np.uint8, 15) # measParamsposition + Parameters = {} + + # READ CONTENTS FROM UVP PARAMETER BLOCK LINE BY LINE + par = "" + while par != "Table": + line = file.readline().rstrip() # Read new line + if (len(line) > 0) & (b"=" in line): # skip empty lines + # print(line) + tp = line.decode("utf-8").split("=")[0] + par = line.decode("utf-8").split("=")[0] + if len(tp) > 1: + Parameters[par] = line.decode("utf-8").split("=")[1] + else: + Parameters[par] = [] + + # converting time in seconds - dt = 100 ns + if convert_time: + Data["profileTime"] = Data["profileTime"] * 100 * 1e-9 + # Formatting parameters + Units = Base_units.copy() + for key in Parameters.keys(): + # Assigning good type to parameters + Parameters[key] = Types[key](Parameters[key]) + if SI_units & (Base_units[key] == "mm"): # Converting mm to m + Parameters[key] = 1e-3 * Parameters[key] + Units[key] = "m" + if SI_units & (Base_units[key] == "ms"): # Converting ms to s + Parameters[key] = 1e-3 * Parameters[key] + Units[key] = "s" + + Data["DistanceAlongBeam"] = (np.arange(Data["AmplitudeData"].shape[0]) * Parameters["ChannelDistance"] + + Parameters["StartChannel"]) + return Data, Parameters, Infos, Units
+ + + +# def filetime_to_dt(ft): +# us = int(ft) // 10 +# return dt.datetime(1601, 1, 1) + dt.timedelta(microseconds=us) + + +
+[docs] +def velocity_from_UVPdata(raw_data, SoundSpeed, MaximumDepth, Angle: float, Frequency: float, Nbytes: int = 8): + """Calculate velocity from UDV raw data. Units must be checked outside of this function - no conversion is done here. + + Parameters + ---------- + raw_data : float, numpy array + Raw data coming out of the UDV. + SoundSpeed : float + Sound velocity. + MaximumDepth : float + Maximum depth measurement, as defined by the Pulse Repetition Frequency. + Angle : float + Angle between the probe and the flow direction. + Frequency : float + Frequency of the probe. + Nbytes : int + Number of bytes over which the raw data are coded (the default is 8). + + Returns + ------- + float, numpy array + Velocity field + + """ + PRF = SoundSpeed / (2*MaximumDepth) # Pulse Repetiion Frequency + N_DU = 2**Nbytes # Number of possible velocities coded on 'Nbytes'-bit + Doppler_coeff = PRF / N_DU # Doppler coefficient + # + Fd = raw_data * Doppler_coeff # Doppler frequencies + Angle_correction = 1 / np.sin(np.pi * Angle / 180) # angle correction + # + # return radial velocity + return Fd * SoundSpeed * Angle_correction / (2*Frequency)
+ + + +
+[docs] +def velocity_from_mfprof_reading(Data: dict, Parameters: dict, Nbytes: int = 8): + """Calculate velocity from `Data` and `Parameters` dictionnaries as output of :func:`read_mfprof <pyudv.read_mfprof.read_mfprof>`, + using the function :func:`velocity_from_UVPdata <pyudv.read_mfprof.velocity_from_UVPdata>`. + + Parameters + ---------- + Data : dict + Data dictionnary coming from :func:`read_mfprof <pyudv.read_mfprof.read_mfprof>`. + Parameters : dict + Parameters dictionnary coming from :func:`read_mfprof <pyudv.read_mfprof.read_mfprof>`. + Nbytes : int + Number of bytes over which the raw data are coded (the default is 8). + + Returns + ------- + float, numpy array + Velocity field + + """ + raw_data = Data["DopplerData"] + SoundSpeed, MaximumDepth, Angle, Frequency = ( + Parameters["SoundSpeed"], + Parameters["MaximumDepth"], + Parameters["Angle"], + Parameters["Frequency"], + ) + return velocity_from_UVPdata(raw_data, SoundSpeed, MaximumDepth, Angle, Frequency, Nbytes=Nbytes)
+ + + +
+[docs] +def amplitude_from_UVPdata( + raw_data, + z, + GainStart, + GainEnd, + zend: float, + zstart: float = 0.37 * 1e-3, + Nbytes: int = 14, + deltaV: float = 5, +): + """Correct the raw amplitude data as outut of the UVP-DUO. + + Parameters + ---------- + raw_data : scalar, array + raw echo signal before demodulation outputted by the UVP. + z : scalar, array + position corresponding to `raw_data`. + GainStart : scalar + start absolute gain. + GainEnd : scalar + end absolute gain. + zend : float + Maximum measurable distance by the UVP. + zstart : float + minimum measurable distance by the UVP (the default is 0.00037)). + Nbytes : int + Number of bytes over which the raw data are coded (the default is 14). + deltaV : int + Volt range corresponding to the number of bytes (the default is 5). + + Returns + ------- + scalar, array + Unamplified/corrected echo signal. + + """ + return (raw_data * (1/GainStart) * (GainStart / GainEnd)**((z-zstart) / (zend-zstart)) * deltaV / 2**Nbytes)
+ + + +
+[docs] +def amplitude_from_mfprof_reading(Data: dict, Parameters: dict, Nbytes: int = 14, deltaV: float = 5): + """Calculate the unamplified/corrected echo signal from `Data` and `Parameters` dictionnaries as output of :func:`read_mfprof <pyudv.read_mfprof.read_mfprof>`, + using the function :func:`amplitude_from_UVPdata <pyudv.read_mfprof.amplitude_from_UVPdata>`. + + Parameters + ---------- + Data : dict + Data dictionnary coming from :func:`read_mfprof <pyudv.read_mfprof.read_mfprof>`. + Parameters : dict + Parameters dictionnary coming from :func:`read_mfprof <pyudv.read_mfprof.read_mfprof>`. + Nbytes : int + Number of bytes over which the raw data are coded (the default is 14). + deltaV : int + Volt range corresponding to the number of bytes (the default is 5). + + Returns + ------- + scalar, array + Unamplified/corrected echo signal. + + """ + raw_data, z = Data["AmplitudeData"], Data["DistanceAlongBeam"][:, None] + zend = Parameters["MaximumDepth"] + F0 = Parameters["Frequency"] / 1e6 # frequency in Mhz + GainStart, GainEnd = ( + Absolute_gains[F0][Parameters["GainStart"]], + Absolute_gains[F0][Parameters["GainEnd"]], + ) + return amplitude_from_UVPdata(raw_data, z, GainStart, GainEnd, zend, Nbytes=Nbytes, deltaV=deltaV)
+ + + +# #### Writing functions + + +
+[docs] +def write_dictionnary(dico: dict, file: str): + """Write parameter dictionnary to a .txt file. + Each line of this file is a dictionnary key, followed by the corresponding entry, directly converted using :func:`str <str>`. + + Parameters + ---------- + dico : dict + input dictionnary + file : str + output txt file. + + Returns + ------- + + Nothing. + + """ + with open(file, "w") as f: + for key in sorted(dico.keys()): + line = key + ": " + str(dico[key]) + "\n" + f.write(line)
+ + + +def _create_variable( + netcdf_group, + name, + data, + dimensions=None, + std=None, + unit=None, + comments=None, + type="float64", +): + if dimensions is not None: + var = netcdf_group.createVariable(name, type, (dimensions)) + else: + var = netcdf_group.createVariable(name, type) + var[:] = data + if std is not None: + var.std = std + if unit is not None: + var.unit = unit + if comments is not None: + var.comments = comments + + +
+[docs] +def mfprof_to_netcdf(input_mfprof: str, output_netcdf: str | object, add_attr: dict = None, cut_zeros: bool = True): + """ + Convert a .mfprof file to a netCDF file. + + Parameters + ---------- + input_mfprof : str + input .mfprof file path + output_netcdf : str | object + output netCDF file path, or netCDF4 object (Dataset, Group) in which the data will be stored. + add_attr : dict, optional + dictionnary containing attributes to be added to the netCDF file, by default None. For example, `add_attr = {name: 'John Smith', team: 'the best'}` + cut_zeros : bool, optional + If True, cut the measurements data and remove all the trailing 0 added when the measurements are stopped bedore the attributed time, by default True + + Example + ------- + >>> mfprof_to_netcdf('input.mfprof', 'output.nc', add_attr = {name: 'John Smith', team: 'the best'}, cut_zeros=True) + """ + if isinstance(output_netcdf, str): + newfile = netCDF4.Dataset(output_netcdf, "w", format="NETCDF4") + else: + newfile = output_netcdf + # + Data, Parameters, Info, Units = read_mfprof(input_mfprof) + amplitude_data = amplitude_from_mfprof_reading(Data, Parameters) + velocity_data = velocity_from_mfprof_reading(Data, Parameters) + # + tmax = (np.argwhere(Data["transducer"] == 0).squeeze()[0] if ((Data["transducer"] == 0).any() & cut_zeros) else -1) + # ### fill Data + newfile.createDimension("time", Data["profileTime"][:tmax].size) + newfile.createDimension("z", Data["DistanceAlongBeam"].size) + # + for key, var in Data.items(): + if key in ["DistanceAlongBeam"]: + dims = "z" + elif key in ["profileTime", "transducer"]: + dims = "time" + else: + dims = ("z", "time") + # + _create_variable( + newfile, + key, + var[..., :tmax] if key != "DistanceAlongBeam" else var, + dimensions=dims, + unit=Units[key] if key in Units.keys() else None, + ) + _create_variable( + newfile, + "amplitude_data", + amplitude_data[..., :tmax], + dimensions=("z", "time"), + unit="V", + ) + _create_variable( + newfile, + "velocity_data", + velocity_data[..., :tmax], + dimensions=("z", "time"), + unit="m/s", + ) + # ### fill Parameters and Info + for key, var in Parameters.items(): + setattr(newfile, key, var) + for key, var in Info.items(): + setattr(newfile, key, var) + # ### fill additional attributes + if add_attr is not None: + for key, var in add_attr.items(): + setattr(newfile, key, var) + # + if cut_zeros: + newfile.cut_zeros = "True. File has been shortened while converted to netcdf as there was trailing unused zeros." + newfile.NumberOfCyclesShort = Data["profileTime"][:tmax].size + # + if isinstance(output_netcdf, str): + newfile.close()
+ +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/scipy/integrate/_quadrature.html b/_modules/scipy/integrate/_quadrature.html new file mode 100644 index 0000000..13496e9 --- /dev/null +++ b/_modules/scipy/integrate/_quadrature.html @@ -0,0 +1,1942 @@ + + + + + + + + + + scipy.integrate._quadrature — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for scipy.integrate._quadrature

+from __future__ import annotations
+from typing import TYPE_CHECKING, Callable, Any, cast
+import numpy as np
+import math
+import warnings
+from collections import namedtuple
+
+from scipy.special import roots_legendre
+from scipy.special import gammaln, logsumexp
+from scipy._lib._util import _rng_spawn
+
+
+__all__ = ['fixed_quad', 'quadrature', 'romberg', 'romb',
+           'trapezoid', 'trapz', 'simps', 'simpson',
+           'cumulative_trapezoid', 'cumtrapz', 'newton_cotes',
+           'qmc_quad', 'AccuracyWarning']
+
+
+
+[docs] +def trapezoid(y, x=None, dx=1.0, axis=-1): + r""" + Integrate along the given axis using the composite trapezoidal rule. + + If `x` is provided, the integration happens in sequence along its + elements - they are not sorted. + + Integrate `y` (`x`) along each 1d slice on the given axis, compute + :math:`\int y(x) dx`. + When `x` is specified, this integrates along the parametric curve, + computing :math:`\int_t y(t) dt = + \int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt`. + + Parameters + ---------- + y : array_like + Input array to integrate. + x : array_like, optional + The sample points corresponding to the `y` values. If `x` is None, + the sample points are assumed to be evenly spaced `dx` apart. The + default is None. + dx : scalar, optional + The spacing between sample points when `x` is None. The default is 1. + axis : int, optional + The axis along which to integrate. + + Returns + ------- + trapezoid : float or ndarray + Definite integral of `y` = n-dimensional array as approximated along + a single axis by the trapezoidal rule. If `y` is a 1-dimensional array, + then the result is a float. If `n` is greater than 1, then the result + is an `n`-1 dimensional array. + + See Also + -------- + cumulative_trapezoid, simpson, romb + + Notes + ----- + Image [2]_ illustrates trapezoidal rule -- y-axis locations of points + will be taken from `y` array, by default x-axis distances between + points will be 1.0, alternatively they can be provided with `x` array + or with `dx` scalar. Return value will be equal to combined area under + the red lines. + + References + ---------- + .. [1] Wikipedia page: https://en.wikipedia.org/wiki/Trapezoidal_rule + + .. [2] Illustration image: + https://en.wikipedia.org/wiki/File:Composite_trapezoidal_rule_illustration.png + + Examples + -------- + Use the trapezoidal rule on evenly spaced points: + + >>> import numpy as np + >>> from scipy import integrate + >>> integrate.trapezoid([1, 2, 3]) + 4.0 + + The spacing between sample points can be selected by either the + ``x`` or ``dx`` arguments: + + >>> integrate.trapezoid([1, 2, 3], x=[4, 6, 8]) + 8.0 + >>> integrate.trapezoid([1, 2, 3], dx=2) + 8.0 + + Using a decreasing ``x`` corresponds to integrating in reverse: + + >>> integrate.trapezoid([1, 2, 3], x=[8, 6, 4]) + -8.0 + + More generally ``x`` is used to integrate along a parametric curve. We can + estimate the integral :math:`\int_0^1 x^2 = 1/3` using: + + >>> x = np.linspace(0, 1, num=50) + >>> y = x**2 + >>> integrate.trapezoid(y, x) + 0.33340274885464394 + + Or estimate the area of a circle, noting we repeat the sample which closes + the curve: + + >>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True) + >>> integrate.trapezoid(np.cos(theta), x=np.sin(theta)) + 3.141571941375841 + + ``trapezoid`` can be applied along a specified axis to do multiple + computations in one call: + + >>> a = np.arange(6).reshape(2, 3) + >>> a + array([[0, 1, 2], + [3, 4, 5]]) + >>> integrate.trapezoid(a, axis=0) + array([1.5, 2.5, 3.5]) + >>> integrate.trapezoid(a, axis=1) + array([2., 8.]) + """ + # Future-proofing, in case NumPy moves from trapz to trapezoid for the same + # reasons as SciPy + if hasattr(np, 'trapezoid'): + return np.trapezoid(y, x=x, dx=dx, axis=axis) + else: + return np.trapz(y, x=x, dx=dx, axis=axis)
+ + + +# Note: alias kept for backwards compatibility. Rename was done +# because trapz is a slur in colloquial English (see gh-12924). +def trapz(y, x=None, dx=1.0, axis=-1): + """An alias of `trapezoid`. + + `trapz` is kept for backwards compatibility. For new code, prefer + `trapezoid` instead. + """ + return trapezoid(y, x=x, dx=dx, axis=axis) + + +class AccuracyWarning(Warning): + pass + + +if TYPE_CHECKING: + # workaround for mypy function attributes see: + # https://github.com/python/mypy/issues/2087#issuecomment-462726600 + from typing import Protocol + + class CacheAttributes(Protocol): + cache: dict[int, tuple[Any, Any]] +else: + CacheAttributes = Callable + + +def cache_decorator(func: Callable) -> CacheAttributes: + return cast(CacheAttributes, func) + + +@cache_decorator +def _cached_roots_legendre(n): + """ + Cache roots_legendre results to speed up calls of the fixed_quad + function. + """ + if n in _cached_roots_legendre.cache: + return _cached_roots_legendre.cache[n] + + _cached_roots_legendre.cache[n] = roots_legendre(n) + return _cached_roots_legendre.cache[n] + + +_cached_roots_legendre.cache = dict() + + +def fixed_quad(func, a, b, args=(), n=5): + """ + Compute a definite integral using fixed-order Gaussian quadrature. + + Integrate `func` from `a` to `b` using Gaussian quadrature of + order `n`. + + Parameters + ---------- + func : callable + A Python function or method to integrate (must accept vector inputs). + If integrating a vector-valued function, the returned array must have + shape ``(..., len(x))``. + a : float + Lower limit of integration. + b : float + Upper limit of integration. + args : tuple, optional + Extra arguments to pass to function, if any. + n : int, optional + Order of quadrature integration. Default is 5. + + Returns + ------- + val : float + Gaussian quadrature approximation to the integral + none : None + Statically returned value of None + + See Also + -------- + quad : adaptive quadrature using QUADPACK + dblquad : double integrals + tplquad : triple integrals + romberg : adaptive Romberg quadrature + quadrature : adaptive Gaussian quadrature + romb : integrators for sampled data + simpson : integrators for sampled data + cumulative_trapezoid : cumulative integration for sampled data + ode : ODE integrator + odeint : ODE integrator + + Examples + -------- + >>> from scipy import integrate + >>> import numpy as np + >>> f = lambda x: x**8 + >>> integrate.fixed_quad(f, 0.0, 1.0, n=4) + (0.1110884353741496, None) + >>> integrate.fixed_quad(f, 0.0, 1.0, n=5) + (0.11111111111111102, None) + >>> print(1/9.0) # analytical result + 0.1111111111111111 + + >>> integrate.fixed_quad(np.cos, 0.0, np.pi/2, n=4) + (0.9999999771971152, None) + >>> integrate.fixed_quad(np.cos, 0.0, np.pi/2, n=5) + (1.000000000039565, None) + >>> np.sin(np.pi/2)-np.sin(0) # analytical result + 1.0 + + """ + x, w = _cached_roots_legendre(n) + x = np.real(x) + if np.isinf(a) or np.isinf(b): + raise ValueError("Gaussian quadrature is only available for " + "finite limits.") + y = (b-a)*(x+1)/2.0 + a + return (b-a)/2.0 * np.sum(w*func(y, *args), axis=-1), None + + +def vectorize1(func, args=(), vec_func=False): + """Vectorize the call to a function. + + This is an internal utility function used by `romberg` and + `quadrature` to create a vectorized version of a function. + + If `vec_func` is True, the function `func` is assumed to take vector + arguments. + + Parameters + ---------- + func : callable + User defined function. + args : tuple, optional + Extra arguments for the function. + vec_func : bool, optional + True if the function func takes vector arguments. + + Returns + ------- + vfunc : callable + A function that will take a vector argument and return the + result. + + """ + if vec_func: + def vfunc(x): + return func(x, *args) + else: + def vfunc(x): + if np.isscalar(x): + return func(x, *args) + x = np.asarray(x) + # call with first point to get output type + y0 = func(x[0], *args) + n = len(x) + dtype = getattr(y0, 'dtype', type(y0)) + output = np.empty((n,), dtype=dtype) + output[0] = y0 + for i in range(1, n): + output[i] = func(x[i], *args) + return output + return vfunc + + +def quadrature(func, a, b, args=(), tol=1.49e-8, rtol=1.49e-8, maxiter=50, + vec_func=True, miniter=1): + """ + Compute a definite integral using fixed-tolerance Gaussian quadrature. + + Integrate `func` from `a` to `b` using Gaussian quadrature + with absolute tolerance `tol`. + + Parameters + ---------- + func : function + A Python function or method to integrate. + a : float + Lower limit of integration. + b : float + Upper limit of integration. + args : tuple, optional + Extra arguments to pass to function. + tol, rtol : float, optional + Iteration stops when error between last two iterates is less than + `tol` OR the relative change is less than `rtol`. + maxiter : int, optional + Maximum order of Gaussian quadrature. + vec_func : bool, optional + True or False if func handles arrays as arguments (is + a "vector" function). Default is True. + miniter : int, optional + Minimum order of Gaussian quadrature. + + Returns + ------- + val : float + Gaussian quadrature approximation (within tolerance) to integral. + err : float + Difference between last two estimates of the integral. + + See Also + -------- + romberg : adaptive Romberg quadrature + fixed_quad : fixed-order Gaussian quadrature + quad : adaptive quadrature using QUADPACK + dblquad : double integrals + tplquad : triple integrals + romb : integrator for sampled data + simpson : integrator for sampled data + cumulative_trapezoid : cumulative integration for sampled data + ode : ODE integrator + odeint : ODE integrator + + Examples + -------- + >>> from scipy import integrate + >>> import numpy as np + >>> f = lambda x: x**8 + >>> integrate.quadrature(f, 0.0, 1.0) + (0.11111111111111106, 4.163336342344337e-17) + >>> print(1/9.0) # analytical result + 0.1111111111111111 + + >>> integrate.quadrature(np.cos, 0.0, np.pi/2) + (0.9999999999999536, 3.9611425250996035e-11) + >>> np.sin(np.pi/2)-np.sin(0) # analytical result + 1.0 + + """ + if not isinstance(args, tuple): + args = (args,) + vfunc = vectorize1(func, args, vec_func=vec_func) + val = np.inf + err = np.inf + maxiter = max(miniter+1, maxiter) + for n in range(miniter, maxiter+1): + newval = fixed_quad(vfunc, a, b, (), n)[0] + err = abs(newval-val) + val = newval + + if err < tol or err < rtol*abs(val): + break + else: + warnings.warn( + "maxiter (%d) exceeded. Latest difference = %e" % (maxiter, err), + AccuracyWarning) + return val, err + + +def tupleset(t, i, value): + l = list(t) + l[i] = value + return tuple(l) + + +# Note: alias kept for backwards compatibility. Rename was done +# because cumtrapz is a slur in colloquial English (see gh-12924). +def cumtrapz(y, x=None, dx=1.0, axis=-1, initial=None): + """An alias of `cumulative_trapezoid`. + + `cumtrapz` is kept for backwards compatibility. For new code, prefer + `cumulative_trapezoid` instead. + """ + return cumulative_trapezoid(y, x=x, dx=dx, axis=axis, initial=initial) + + +
+[docs] +def cumulative_trapezoid(y, x=None, dx=1.0, axis=-1, initial=None): + """ + Cumulatively integrate y(x) using the composite trapezoidal rule. + + Parameters + ---------- + y : array_like + Values to integrate. + x : array_like, optional + The coordinate to integrate along. If None (default), use spacing `dx` + between consecutive elements in `y`. + dx : float, optional + Spacing between elements of `y`. Only used if `x` is None. + axis : int, optional + Specifies the axis to cumulate. Default is -1 (last axis). + initial : scalar, optional + If given, insert this value at the beginning of the returned result. + Typically this value should be 0. Default is None, which means no + value at ``x[0]`` is returned and `res` has one element less than `y` + along the axis of integration. + + Returns + ------- + res : ndarray + The result of cumulative integration of `y` along `axis`. + If `initial` is None, the shape is such that the axis of integration + has one less value than `y`. If `initial` is given, the shape is equal + to that of `y`. + + See Also + -------- + numpy.cumsum, numpy.cumprod + quad : adaptive quadrature using QUADPACK + romberg : adaptive Romberg quadrature + quadrature : adaptive Gaussian quadrature + fixed_quad : fixed-order Gaussian quadrature + dblquad : double integrals + tplquad : triple integrals + romb : integrators for sampled data + ode : ODE integrators + odeint : ODE integrators + + Examples + -------- + >>> from scipy import integrate + >>> import numpy as np + >>> import matplotlib.pyplot as plt + + >>> x = np.linspace(-2, 2, num=20) + >>> y = x + >>> y_int = integrate.cumulative_trapezoid(y, x, initial=0) + >>> plt.plot(x, y_int, 'ro', x, y[0] + 0.5 * x**2, 'b-') + >>> plt.show() + + """ + y = np.asarray(y) + if x is None: + d = dx + else: + x = np.asarray(x) + if x.ndim == 1: + d = np.diff(x) + # reshape to correct shape + shape = [1] * y.ndim + shape[axis] = -1 + d = d.reshape(shape) + elif len(x.shape) != len(y.shape): + raise ValueError("If given, shape of x must be 1-D or the " + "same as y.") + else: + d = np.diff(x, axis=axis) + + if d.shape[axis] != y.shape[axis] - 1: + raise ValueError("If given, length of x along axis must be the " + "same as y.") + + nd = len(y.shape) + slice1 = tupleset((slice(None),)*nd, axis, slice(1, None)) + slice2 = tupleset((slice(None),)*nd, axis, slice(None, -1)) + res = np.cumsum(d * (y[slice1] + y[slice2]) / 2.0, axis=axis) + + if initial is not None: + if not np.isscalar(initial): + raise ValueError("`initial` parameter should be a scalar.") + + shape = list(res.shape) + shape[axis] = 1 + res = np.concatenate([np.full(shape, initial, dtype=res.dtype), res], + axis=axis) + + return res
+ + + +def _basic_simpson(y, start, stop, x, dx, axis): + nd = len(y.shape) + if start is None: + start = 0 + step = 2 + slice_all = (slice(None),)*nd + slice0 = tupleset(slice_all, axis, slice(start, stop, step)) + slice1 = tupleset(slice_all, axis, slice(start+1, stop+1, step)) + slice2 = tupleset(slice_all, axis, slice(start+2, stop+2, step)) + + if x is None: # Even-spaced Simpson's rule. + result = np.sum(y[slice0] + 4.0*y[slice1] + y[slice2], axis=axis) + result *= dx / 3.0 + else: + # Account for possibly different spacings. + # Simpson's rule changes a bit. + h = np.diff(x, axis=axis) + sl0 = tupleset(slice_all, axis, slice(start, stop, step)) + sl1 = tupleset(slice_all, axis, slice(start+1, stop+1, step)) + h0 = h[sl0].astype(float, copy=False) + h1 = h[sl1].astype(float, copy=False) + hsum = h0 + h1 + hprod = h0 * h1 + h0divh1 = np.true_divide(h0, h1, out=np.zeros_like(h0), where=h1 != 0) + tmp = hsum/6.0 * (y[slice0] * + (2.0 - np.true_divide(1.0, h0divh1, + out=np.zeros_like(h0divh1), + where=h0divh1 != 0)) + + y[slice1] * (hsum * + np.true_divide(hsum, hprod, + out=np.zeros_like(hsum), + where=hprod != 0)) + + y[slice2] * (2.0 - h0divh1)) + result = np.sum(tmp, axis=axis) + return result + + +# Note: alias kept for backwards compatibility. simps was renamed to simpson +# because the former is a slur in colloquial English (see gh-12924). +def simps(y, x=None, dx=1.0, axis=-1, even=None): + """An alias of `simpson`. + + `simps` is kept for backwards compatibility. For new code, prefer + `simpson` instead. + """ + return simpson(y, x=x, dx=dx, axis=axis, even=even) + + +def simpson(y, x=None, dx=1.0, axis=-1, even=None): + """ + Integrate y(x) using samples along the given axis and the composite + Simpson's rule. If x is None, spacing of dx is assumed. + + If there are an even number of samples, N, then there are an odd + number of intervals (N-1), but Simpson's rule requires an even number + of intervals. The parameter 'even' controls how this is handled. + + Parameters + ---------- + y : array_like + Array to be integrated. + x : array_like, optional + If given, the points at which `y` is sampled. + dx : float, optional + Spacing of integration points along axis of `x`. Only used when + `x` is None. Default is 1. + axis : int, optional + Axis along which to integrate. Default is the last axis. + even : {None, 'simpson', 'avg', 'first', 'last'}, optional + 'avg' : Average two results: + 1) use the first N-2 intervals with + a trapezoidal rule on the last interval and + 2) use the last + N-2 intervals with a trapezoidal rule on the first interval. + + 'first' : Use Simpson's rule for the first N-2 intervals with + a trapezoidal rule on the last interval. + + 'last' : Use Simpson's rule for the last N-2 intervals with a + trapezoidal rule on the first interval. + + None : equivalent to 'simpson' (default) + + 'simpson' : Use Simpson's rule for the first N-2 intervals with the + addition of a 3-point parabolic segment for the last + interval using equations outlined by Cartwright [1]_. + If the axis to be integrated over only has two points then + the integration falls back to a trapezoidal integration. + + .. versionadded:: 1.11.0 + + .. versionchanged:: 1.11.0 + The newly added 'simpson' option is now the default as it is more + accurate in most situations. + + .. deprecated:: 1.11.0 + Parameter `even` is deprecated and will be removed in SciPy + 1.13.0. After this time the behaviour for an even number of + points will follow that of `even='simpson'`. + + Returns + ------- + float + The estimated integral computed with the composite Simpson's rule. + + See Also + -------- + quad : adaptive quadrature using QUADPACK + romberg : adaptive Romberg quadrature + quadrature : adaptive Gaussian quadrature + fixed_quad : fixed-order Gaussian quadrature + dblquad : double integrals + tplquad : triple integrals + romb : integrators for sampled data + cumulative_trapezoid : cumulative integration for sampled data + ode : ODE integrators + odeint : ODE integrators + + Notes + ----- + For an odd number of samples that are equally spaced the result is + exact if the function is a polynomial of order 3 or less. If + the samples are not equally spaced, then the result is exact only + if the function is a polynomial of order 2 or less. + + References + ---------- + .. [1] Cartwright, Kenneth V. Simpson's Rule Cumulative Integration with + MS Excel and Irregularly-spaced Data. Journal of Mathematical + Sciences and Mathematics Education. 12 (2): 1-9 + + Examples + -------- + >>> from scipy import integrate + >>> import numpy as np + >>> x = np.arange(0, 10) + >>> y = np.arange(0, 10) + + >>> integrate.simpson(y, x) + 40.5 + + >>> y = np.power(x, 3) + >>> integrate.simpson(y, x) + 1640.5 + >>> integrate.quad(lambda x: x**3, 0, 9)[0] + 1640.25 + + >>> integrate.simpson(y, x, even='first') + 1644.5 + + """ + y = np.asarray(y) + nd = len(y.shape) + N = y.shape[axis] + last_dx = dx + first_dx = dx + returnshape = 0 + if x is not None: + x = np.asarray(x) + if len(x.shape) == 1: + shapex = [1] * nd + shapex[axis] = x.shape[0] + saveshape = x.shape + returnshape = 1 + x = x.reshape(tuple(shapex)) + elif len(x.shape) != len(y.shape): + raise ValueError("If given, shape of x must be 1-D or the " + "same as y.") + if x.shape[axis] != N: + raise ValueError("If given, length of x along axis must be the " + "same as y.") + + # even keyword parameter is deprecated + if even is not None: + warnings.warn( + "The 'even' keyword is deprecated as of SciPy 1.11.0 and will be " + "removed in SciPy 1.13.0", + DeprecationWarning, stacklevel=2 + ) + + if N % 2 == 0: + val = 0.0 + result = 0.0 + slice_all = (slice(None),) * nd + + # default is 'simpson' + even = even if even is not None else "simpson" + + if even not in ['avg', 'last', 'first', 'simpson']: + raise ValueError( + "Parameter 'even' must be 'simpson', " + "'avg', 'last', or 'first'." + ) + + if N == 2: + # need at least 3 points in integration axis to form parabolic + # segment. If there are two points then any of 'avg', 'first', + # 'last' should give the same result. + slice1 = tupleset(slice_all, axis, -1) + slice2 = tupleset(slice_all, axis, -2) + if x is not None: + last_dx = x[slice1] - x[slice2] + val += 0.5 * last_dx * (y[slice1] + y[slice2]) + + # calculation is finished. Set `even` to None to skip other + # scenarios + even = None + + if even == 'simpson': + # use Simpson's rule on first intervals + result = _basic_simpson(y, 0, N-3, x, dx, axis) + + slice1 = tupleset(slice_all, axis, -1) + slice2 = tupleset(slice_all, axis, -2) + slice3 = tupleset(slice_all, axis, -3) + + h = np.asfarray([dx, dx]) + if x is not None: + # grab the last two spacings from the appropriate axis + hm2 = tupleset(slice_all, axis, slice(-2, -1, 1)) + hm1 = tupleset(slice_all, axis, slice(-1, None, 1)) + + diffs = np.float64(np.diff(x, axis=axis)) + h = [np.squeeze(diffs[hm2], axis=axis), + np.squeeze(diffs[hm1], axis=axis)] + + # This is the correction for the last interval according to + # Cartwright. + # However, I used the equations given at + # https://en.wikipedia.org/wiki/Simpson%27s_rule#Composite_Simpson's_rule_for_irregularly_spaced_data + # A footnote on Wikipedia says: + # Cartwright 2017, Equation 8. The equation in Cartwright is + # calculating the first interval whereas the equations in the + # Wikipedia article are adjusting for the last integral. If the + # proper algebraic substitutions are made, the equation results in + # the values shown. + num = 2 * h[1] ** 2 + 3 * h[0] * h[1] + den = 6 * (h[1] + h[0]) + alpha = np.true_divide( + num, + den, + out=np.zeros_like(den), + where=den != 0 + ) + + num = h[1] ** 2 + 3.0 * h[0] * h[1] + den = 6 * h[0] + beta = np.true_divide( + num, + den, + out=np.zeros_like(den), + where=den != 0 + ) + + num = 1 * h[1] ** 3 + den = 6 * h[0] * (h[0] + h[1]) + eta = np.true_divide( + num, + den, + out=np.zeros_like(den), + where=den != 0 + ) + + result += alpha*y[slice1] + beta*y[slice2] - eta*y[slice3] + + # The following code (down to result=result+val) can be removed + # once the 'even' keyword is removed. + + # Compute using Simpson's rule on first intervals + if even in ['avg', 'first']: + slice1 = tupleset(slice_all, axis, -1) + slice2 = tupleset(slice_all, axis, -2) + if x is not None: + last_dx = x[slice1] - x[slice2] + val += 0.5*last_dx*(y[slice1]+y[slice2]) + result = _basic_simpson(y, 0, N-3, x, dx, axis) + # Compute using Simpson's rule on last set of intervals + if even in ['avg', 'last']: + slice1 = tupleset(slice_all, axis, 0) + slice2 = tupleset(slice_all, axis, 1) + if x is not None: + first_dx = x[tuple(slice2)] - x[tuple(slice1)] + val += 0.5*first_dx*(y[slice2]+y[slice1]) + result += _basic_simpson(y, 1, N-2, x, dx, axis) + if even == 'avg': + val /= 2.0 + result /= 2.0 + result = result + val + else: + result = _basic_simpson(y, 0, N-2, x, dx, axis) + if returnshape: + x = x.reshape(saveshape) + return result + + +def romb(y, dx=1.0, axis=-1, show=False): + """ + Romberg integration using samples of a function. + + Parameters + ---------- + y : array_like + A vector of ``2**k + 1`` equally-spaced samples of a function. + dx : float, optional + The sample spacing. Default is 1. + axis : int, optional + The axis along which to integrate. Default is -1 (last axis). + show : bool, optional + When `y` is a single 1-D array, then if this argument is True + print the table showing Richardson extrapolation from the + samples. Default is False. + + Returns + ------- + romb : ndarray + The integrated result for `axis`. + + See Also + -------- + quad : adaptive quadrature using QUADPACK + romberg : adaptive Romberg quadrature + quadrature : adaptive Gaussian quadrature + fixed_quad : fixed-order Gaussian quadrature + dblquad : double integrals + tplquad : triple integrals + simpson : integrators for sampled data + cumulative_trapezoid : cumulative integration for sampled data + ode : ODE integrators + odeint : ODE integrators + + Examples + -------- + >>> from scipy import integrate + >>> import numpy as np + >>> x = np.arange(10, 14.25, 0.25) + >>> y = np.arange(3, 12) + + >>> integrate.romb(y) + 56.0 + + >>> y = np.sin(np.power(x, 2.5)) + >>> integrate.romb(y) + -0.742561336672229 + + >>> integrate.romb(y, show=True) + Richardson Extrapolation Table for Romberg Integration + ====================================================== + -0.81576 + 4.63862 6.45674 + -1.10581 -3.02062 -3.65245 + -2.57379 -3.06311 -3.06595 -3.05664 + -1.34093 -0.92997 -0.78776 -0.75160 -0.74256 + ====================================================== + -0.742561336672229 # may vary + + """ + y = np.asarray(y) + nd = len(y.shape) + Nsamps = y.shape[axis] + Ninterv = Nsamps-1 + n = 1 + k = 0 + while n < Ninterv: + n <<= 1 + k += 1 + if n != Ninterv: + raise ValueError("Number of samples must be one plus a " + "non-negative power of 2.") + + R = {} + slice_all = (slice(None),) * nd + slice0 = tupleset(slice_all, axis, 0) + slicem1 = tupleset(slice_all, axis, -1) + h = Ninterv * np.asarray(dx, dtype=float) + R[(0, 0)] = (y[slice0] + y[slicem1])/2.0*h + slice_R = slice_all + start = stop = step = Ninterv + for i in range(1, k+1): + start >>= 1 + slice_R = tupleset(slice_R, axis, slice(start, stop, step)) + step >>= 1 + R[(i, 0)] = 0.5*(R[(i-1, 0)] + h*y[slice_R].sum(axis=axis)) + for j in range(1, i+1): + prev = R[(i, j-1)] + R[(i, j)] = prev + (prev-R[(i-1, j-1)]) / ((1 << (2*j))-1) + h /= 2.0 + + if show: + if not np.isscalar(R[(0, 0)]): + print("*** Printing table only supported for integrals" + + " of a single data set.") + else: + try: + precis = show[0] + except (TypeError, IndexError): + precis = 5 + try: + width = show[1] + except (TypeError, IndexError): + width = 8 + formstr = "%%%d.%df" % (width, precis) + + title = "Richardson Extrapolation Table for Romberg Integration" + print(title, "=" * len(title), sep="\n", end="\n") + for i in range(k+1): + for j in range(i+1): + print(formstr % R[(i, j)], end=" ") + print() + print("=" * len(title)) + + return R[(k, k)] + +# Romberg quadratures for numeric integration. +# +# Written by Scott M. Ransom <ransom@cfa.harvard.edu> +# last revision: 14 Nov 98 +# +# Cosmetic changes by Konrad Hinsen <hinsen@cnrs-orleans.fr> +# last revision: 1999-7-21 +# +# Adapted to SciPy by Travis Oliphant <oliphant.travis@ieee.org> +# last revision: Dec 2001 + + +def _difftrap(function, interval, numtraps): + """ + Perform part of the trapezoidal rule to integrate a function. + Assume that we had called difftrap with all lower powers-of-2 + starting with 1. Calling difftrap only returns the summation + of the new ordinates. It does _not_ multiply by the width + of the trapezoids. This must be performed by the caller. + 'function' is the function to evaluate (must accept vector arguments). + 'interval' is a sequence with lower and upper limits + of integration. + 'numtraps' is the number of trapezoids to use (must be a + power-of-2). + """ + if numtraps <= 0: + raise ValueError("numtraps must be > 0 in difftrap().") + elif numtraps == 1: + return 0.5*(function(interval[0])+function(interval[1])) + else: + numtosum = numtraps/2 + h = float(interval[1]-interval[0])/numtosum + lox = interval[0] + 0.5 * h + points = lox + h * np.arange(numtosum) + s = np.sum(function(points), axis=0) + return s + + +def _romberg_diff(b, c, k): + """ + Compute the differences for the Romberg quadrature corrections. + See Forman Acton's "Real Computing Made Real," p 143. + """ + tmp = 4.0**k + return (tmp * c - b)/(tmp - 1.0) + + +def _printresmat(function, interval, resmat): + # Print the Romberg result matrix. + i = j = 0 + print('Romberg integration of', repr(function), end=' ') + print('from', interval) + print('') + print('%6s %9s %9s' % ('Steps', 'StepSize', 'Results')) + for i in range(len(resmat)): + print('%6d %9f' % (2**i, (interval[1]-interval[0])/(2.**i)), end=' ') + for j in range(i+1): + print('%9f' % (resmat[i][j]), end=' ') + print('') + print('') + print('The final result is', resmat[i][j], end=' ') + print('after', 2**(len(resmat)-1)+1, 'function evaluations.') + + +def romberg(function, a, b, args=(), tol=1.48e-8, rtol=1.48e-8, show=False, + divmax=10, vec_func=False): + """ + Romberg integration of a callable function or method. + + Returns the integral of `function` (a function of one variable) + over the interval (`a`, `b`). + + If `show` is 1, the triangular array of the intermediate results + will be printed. If `vec_func` is True (default is False), then + `function` is assumed to support vector arguments. + + Parameters + ---------- + function : callable + Function to be integrated. + a : float + Lower limit of integration. + b : float + Upper limit of integration. + + Returns + ------- + results : float + Result of the integration. + + Other Parameters + ---------------- + args : tuple, optional + Extra arguments to pass to function. Each element of `args` will + be passed as a single argument to `func`. Default is to pass no + extra arguments. + tol, rtol : float, optional + The desired absolute and relative tolerances. Defaults are 1.48e-8. + show : bool, optional + Whether to print the results. Default is False. + divmax : int, optional + Maximum order of extrapolation. Default is 10. + vec_func : bool, optional + Whether `func` handles arrays as arguments (i.e., whether it is a + "vector" function). Default is False. + + See Also + -------- + fixed_quad : Fixed-order Gaussian quadrature. + quad : Adaptive quadrature using QUADPACK. + dblquad : Double integrals. + tplquad : Triple integrals. + romb : Integrators for sampled data. + simpson : Integrators for sampled data. + cumulative_trapezoid : Cumulative integration for sampled data. + ode : ODE integrator. + odeint : ODE integrator. + + References + ---------- + .. [1] 'Romberg's method' https://en.wikipedia.org/wiki/Romberg%27s_method + + Examples + -------- + Integrate a gaussian from 0 to 1 and compare to the error function. + + >>> from scipy import integrate + >>> from scipy.special import erf + >>> import numpy as np + >>> gaussian = lambda x: 1/np.sqrt(np.pi) * np.exp(-x**2) + >>> result = integrate.romberg(gaussian, 0, 1, show=True) + Romberg integration of <function vfunc at ...> from [0, 1] + + :: + + Steps StepSize Results + 1 1.000000 0.385872 + 2 0.500000 0.412631 0.421551 + 4 0.250000 0.419184 0.421368 0.421356 + 8 0.125000 0.420810 0.421352 0.421350 0.421350 + 16 0.062500 0.421215 0.421350 0.421350 0.421350 0.421350 + 32 0.031250 0.421317 0.421350 0.421350 0.421350 0.421350 0.421350 + + The final result is 0.421350396475 after 33 function evaluations. + + >>> print("%g %g" % (2*result, erf(1))) + 0.842701 0.842701 + + """ + if np.isinf(a) or np.isinf(b): + raise ValueError("Romberg integration only available " + "for finite limits.") + vfunc = vectorize1(function, args, vec_func=vec_func) + n = 1 + interval = [a, b] + intrange = b - a + ordsum = _difftrap(vfunc, interval, n) + result = intrange * ordsum + resmat = [[result]] + err = np.inf + last_row = resmat[0] + for i in range(1, divmax+1): + n *= 2 + ordsum += _difftrap(vfunc, interval, n) + row = [intrange * ordsum / n] + for k in range(i): + row.append(_romberg_diff(last_row[k], row[k], k+1)) + result = row[i] + lastresult = last_row[i-1] + if show: + resmat.append(row) + err = abs(result - lastresult) + if err < tol or err < rtol * abs(result): + break + last_row = row + else: + warnings.warn( + "divmax (%d) exceeded. Latest difference = %e" % (divmax, err), + AccuracyWarning) + + if show: + _printresmat(vfunc, interval, resmat) + return result + + +# Coefficients for Newton-Cotes quadrature +# +# These are the points being used +# to construct the local interpolating polynomial +# a are the weights for Newton-Cotes integration +# B is the error coefficient. +# error in these coefficients grows as N gets larger. +# or as samples are closer and closer together + +# You can use maxima to find these rational coefficients +# for equally spaced data using the commands +# a(i,N) := integrate(product(r-j,j,0,i-1) * product(r-j,j,i+1,N),r,0,N) / ((N-i)! * i!) * (-1)^(N-i); +# Be(N) := N^(N+2)/(N+2)! * (N/(N+3) - sum((i/N)^(N+2)*a(i,N),i,0,N)); +# Bo(N) := N^(N+1)/(N+1)! * (N/(N+2) - sum((i/N)^(N+1)*a(i,N),i,0,N)); +# B(N) := (if (mod(N,2)=0) then Be(N) else Bo(N)); +# +# pre-computed for equally-spaced weights +# +# num_a, den_a, int_a, num_B, den_B = _builtincoeffs[N] +# +# a = num_a*array(int_a)/den_a +# B = num_B*1.0 / den_B +# +# integrate(f(x),x,x_0,x_N) = dx*sum(a*f(x_i)) + B*(dx)^(2k+3) f^(2k+2)(x*) +# where k = N // 2 +# +_builtincoeffs = { + 1: (1,2,[1,1],-1,12), + 2: (1,3,[1,4,1],-1,90), + 3: (3,8,[1,3,3,1],-3,80), + 4: (2,45,[7,32,12,32,7],-8,945), + 5: (5,288,[19,75,50,50,75,19],-275,12096), + 6: (1,140,[41,216,27,272,27,216,41],-9,1400), + 7: (7,17280,[751,3577,1323,2989,2989,1323,3577,751],-8183,518400), + 8: (4,14175,[989,5888,-928,10496,-4540,10496,-928,5888,989], + -2368,467775), + 9: (9,89600,[2857,15741,1080,19344,5778,5778,19344,1080, + 15741,2857], -4671, 394240), + 10: (5,299376,[16067,106300,-48525,272400,-260550,427368, + -260550,272400,-48525,106300,16067], + -673175, 163459296), + 11: (11,87091200,[2171465,13486539,-3237113, 25226685,-9595542, + 15493566,15493566,-9595542,25226685,-3237113, + 13486539,2171465], -2224234463, 237758976000), + 12: (1, 5255250, [1364651,9903168,-7587864,35725120,-51491295, + 87516288,-87797136,87516288,-51491295,35725120, + -7587864,9903168,1364651], -3012, 875875), + 13: (13, 402361344000,[8181904909, 56280729661, -31268252574, + 156074417954,-151659573325,206683437987, + -43111992612,-43111992612,206683437987, + -151659573325,156074417954,-31268252574, + 56280729661,8181904909], -2639651053, + 344881152000), + 14: (7, 2501928000, [90241897,710986864,-770720657,3501442784, + -6625093363,12630121616,-16802270373,19534438464, + -16802270373,12630121616,-6625093363,3501442784, + -770720657,710986864,90241897], -3740727473, + 1275983280000) + } + + +def newton_cotes(rn, equal=0): + r""" + Return weights and error coefficient for Newton-Cotes integration. + + Suppose we have (N+1) samples of f at the positions + x_0, x_1, ..., x_N. Then an N-point Newton-Cotes formula for the + integral between x_0 and x_N is: + + :math:`\int_{x_0}^{x_N} f(x)dx = \Delta x \sum_{i=0}^{N} a_i f(x_i) + + B_N (\Delta x)^{N+2} f^{N+1} (\xi)` + + where :math:`\xi \in [x_0,x_N]` + and :math:`\Delta x = \frac{x_N-x_0}{N}` is the average samples spacing. + + If the samples are equally-spaced and N is even, then the error + term is :math:`B_N (\Delta x)^{N+3} f^{N+2}(\xi)`. + + Parameters + ---------- + rn : int + The integer order for equally-spaced data or the relative positions of + the samples with the first sample at 0 and the last at N, where N+1 is + the length of `rn`. N is the order of the Newton-Cotes integration. + equal : int, optional + Set to 1 to enforce equally spaced data. + + Returns + ------- + an : ndarray + 1-D array of weights to apply to the function at the provided sample + positions. + B : float + Error coefficient. + + Notes + ----- + Normally, the Newton-Cotes rules are used on smaller integration + regions and a composite rule is used to return the total integral. + + Examples + -------- + Compute the integral of sin(x) in [0, :math:`\pi`]: + + >>> from scipy.integrate import newton_cotes + >>> import numpy as np + >>> def f(x): + ... return np.sin(x) + >>> a = 0 + >>> b = np.pi + >>> exact = 2 + >>> for N in [2, 4, 6, 8, 10]: + ... x = np.linspace(a, b, N + 1) + ... an, B = newton_cotes(N, 1) + ... dx = (b - a) / N + ... quad = dx * np.sum(an * f(x)) + ... error = abs(quad - exact) + ... print('{:2d} {:10.9f} {:.5e}'.format(N, quad, error)) + ... + 2 2.094395102 9.43951e-02 + 4 1.998570732 1.42927e-03 + 6 2.000017814 1.78136e-05 + 8 1.999999835 1.64725e-07 + 10 2.000000001 1.14677e-09 + + """ + try: + N = len(rn)-1 + if equal: + rn = np.arange(N+1) + elif np.all(np.diff(rn) == 1): + equal = 1 + except Exception: + N = rn + rn = np.arange(N+1) + equal = 1 + + if equal and N in _builtincoeffs: + na, da, vi, nb, db = _builtincoeffs[N] + an = na * np.array(vi, dtype=float) / da + return an, float(nb)/db + + if (rn[0] != 0) or (rn[-1] != N): + raise ValueError("The sample positions must start at 0" + " and end at N") + yi = rn / float(N) + ti = 2 * yi - 1 + nvec = np.arange(N+1) + C = ti ** nvec[:, np.newaxis] + Cinv = np.linalg.inv(C) + # improve precision of result + for i in range(2): + Cinv = 2*Cinv - Cinv.dot(C).dot(Cinv) + vec = 2.0 / (nvec[::2]+1) + ai = Cinv[:, ::2].dot(vec) * (N / 2.) + + if (N % 2 == 0) and equal: + BN = N/(N+3.) + power = N+2 + else: + BN = N/(N+2.) + power = N+1 + + BN = BN - np.dot(yi**power, ai) + p1 = power+1 + fac = power*math.log(N) - gammaln(p1) + fac = math.exp(fac) + return ai, BN*fac + + +def _qmc_quad_iv(func, a, b, n_points, n_estimates, qrng, log): + + # lazy import to avoid issues with partially-initialized submodule + if not hasattr(qmc_quad, 'qmc'): + from scipy import stats + qmc_quad.stats = stats + else: + stats = qmc_quad.stats + + if not callable(func): + message = "`func` must be callable." + raise TypeError(message) + + # a, b will be modified, so copy. Oh well if it's copied twice. + a = np.atleast_1d(a).copy() + b = np.atleast_1d(b).copy() + a, b = np.broadcast_arrays(a, b) + dim = a.shape[0] + + try: + func((a + b) / 2) + except Exception as e: + message = ("`func` must evaluate the integrand at points within " + "the integration range; e.g. `func( (a + b) / 2)` " + "must return the integrand at the centroid of the " + "integration volume.") + raise ValueError(message) from e + + try: + func(np.array([a, b]).T) + vfunc = func + except Exception as e: + message = ("Exception encountered when attempting vectorized call to " + f"`func`: {e}. For better performance, `func` should " + "accept two-dimensional array `x` with shape `(len(a), " + "n_points)` and return an array of the integrand value at " + "each of the `n_points.") + warnings.warn(message, stacklevel=3) + + def vfunc(x): + return np.apply_along_axis(func, axis=-1, arr=x) + + n_points_int = np.int64(n_points) + if n_points != n_points_int: + message = "`n_points` must be an integer." + raise TypeError(message) + + n_estimates_int = np.int64(n_estimates) + if n_estimates != n_estimates_int: + message = "`n_estimates` must be an integer." + raise TypeError(message) + + if qrng is None: + qrng = stats.qmc.Halton(dim) + elif not isinstance(qrng, stats.qmc.QMCEngine): + message = "`qrng` must be an instance of scipy.stats.qmc.QMCEngine." + raise TypeError(message) + + if qrng.d != a.shape[0]: + message = ("`qrng` must be initialized with dimensionality equal to " + "the number of variables in `a`, i.e., " + "`qrng.random().shape[-1]` must equal `a.shape[0]`.") + raise ValueError(message) + + rng_seed = getattr(qrng, 'rng_seed', None) + rng = stats._qmc.check_random_state(rng_seed) + + if log not in {True, False}: + message = "`log` must be boolean (`True` or `False`)." + raise TypeError(message) + + return (vfunc, a, b, n_points_int, n_estimates_int, qrng, rng, log, stats) + + +QMCQuadResult = namedtuple('QMCQuadResult', ['integral', 'standard_error']) + + +def qmc_quad(func, a, b, *, n_estimates=8, n_points=1024, qrng=None, + log=False): + """ + Compute an integral in N-dimensions using Quasi-Monte Carlo quadrature. + + Parameters + ---------- + func : callable + The integrand. Must accept a single argument ``x``, an array which + specifies the point(s) at which to evaluate the scalar-valued + integrand, and return the value(s) of the integrand. + For efficiency, the function should be vectorized to accept an array of + shape ``(d, n_points)``, where ``d`` is the number of variables (i.e. + the dimensionality of the function domain) and `n_points` is the number + of quadrature points, and return an array of shape ``(n_points,)``, + the integrand at each quadrature point. + a, b : array-like + One-dimensional arrays specifying the lower and upper integration + limits, respectively, of each of the ``d`` variables. + n_estimates, n_points : int, optional + `n_estimates` (default: 8) statistically independent QMC samples, each + of `n_points` (default: 1024) points, will be generated by `qrng`. + The total number of points at which the integrand `func` will be + evaluated is ``n_points * n_estimates``. See Notes for details. + qrng : `~scipy.stats.qmc.QMCEngine`, optional + An instance of the QMCEngine from which to sample QMC points. + The QMCEngine must be initialized to a number of dimensions ``d`` + corresponding with the number of variables ``x1, ..., xd`` passed to + `func`. + The provided QMCEngine is used to produce the first integral estimate. + If `n_estimates` is greater than one, additional QMCEngines are + spawned from the first (with scrambling enabled, if it is an option.) + If a QMCEngine is not provided, the default `scipy.stats.qmc.Halton` + will be initialized with the number of dimensions determine from + the length of `a`. + log : boolean, default: False + When set to True, `func` returns the log of the integrand, and + the result object contains the log of the integral. + + Returns + ------- + result : object + A result object with attributes: + + integral : float + The estimate of the integral. + standard_error : + The error estimate. See Notes for interpretation. + + Notes + ----- + Values of the integrand at each of the `n_points` points of a QMC sample + are used to produce an estimate of the integral. This estimate is drawn + from a population of possible estimates of the integral, the value of + which we obtain depends on the particular points at which the integral + was evaluated. We perform this process `n_estimates` times, each time + evaluating the integrand at different scrambled QMC points, effectively + drawing i.i.d. random samples from the population of integral estimates. + The sample mean :math:`m` of these integral estimates is an + unbiased estimator of the true value of the integral, and the standard + error of the mean :math:`s` of these estimates may be used to generate + confidence intervals using the t distribution with ``n_estimates - 1`` + degrees of freedom. Perhaps counter-intuitively, increasing `n_points` + while keeping the total number of function evaluation points + ``n_points * n_estimates`` fixed tends to reduce the actual error, whereas + increasing `n_estimates` tends to decrease the error estimate. + + Examples + -------- + QMC quadrature is particularly useful for computing integrals in higher + dimensions. An example integrand is the probability density function + of a multivariate normal distribution. + + >>> import numpy as np + >>> from scipy import stats + >>> dim = 8 + >>> mean = np.zeros(dim) + >>> cov = np.eye(dim) + >>> def func(x): + ... # `multivariate_normal` expects the _last_ axis to correspond with + ... # the dimensionality of the space, so `x` must be transposed + ... return stats.multivariate_normal.pdf(x.T, mean, cov) + + To compute the integral over the unit hypercube: + + >>> from scipy.integrate import qmc_quad + >>> a = np.zeros(dim) + >>> b = np.ones(dim) + >>> rng = np.random.default_rng() + >>> qrng = stats.qmc.Halton(d=dim, seed=rng) + >>> n_estimates = 8 + >>> res = qmc_quad(func, a, b, n_estimates=n_estimates, qrng=qrng) + >>> res.integral, res.standard_error + (0.00018429555666024108, 1.0389431116001344e-07) + + A two-sided, 99% confidence interval for the integral may be estimated + as: + + >>> t = stats.t(df=n_estimates-1, loc=res.integral, + ... scale=res.standard_error) + >>> t.interval(0.99) + (0.0001839319802536469, 0.00018465913306683527) + + Indeed, the value reported by `scipy.stats.multivariate_normal` is + within this range. + + >>> stats.multivariate_normal.cdf(b, mean, cov, lower_limit=a) + 0.00018430867675187443 + + """ + args = _qmc_quad_iv(func, a, b, n_points, n_estimates, qrng, log) + func, a, b, n_points, n_estimates, qrng, rng, log, stats = args + + def sum_product(integrands, dA, log=False): + if log: + return logsumexp(integrands) + np.log(dA) + else: + return np.sum(integrands * dA) + + def mean(estimates, log=False): + if log: + return logsumexp(estimates) - np.log(n_estimates) + else: + return np.mean(estimates) + + def std(estimates, m=None, ddof=0, log=False): + m = m or mean(estimates, log) + if log: + estimates, m = np.broadcast_arrays(estimates, m) + temp = np.vstack((estimates, m + np.pi * 1j)) + diff = logsumexp(temp, axis=0) + return np.real(0.5 * (logsumexp(2 * diff) + - np.log(n_estimates - ddof))) + else: + return np.std(estimates, ddof=ddof) + + def sem(estimates, m=None, s=None, log=False): + m = m or mean(estimates, log) + s = s or std(estimates, m, ddof=1, log=log) + if log: + return s - 0.5*np.log(n_estimates) + else: + return s / np.sqrt(n_estimates) + + # The sign of the integral depends on the order of the limits. Fix this by + # ensuring that lower bounds are indeed lower and setting sign of resulting + # integral manually + if np.any(a == b): + message = ("A lower limit was equal to an upper limit, so the value " + "of the integral is zero by definition.") + warnings.warn(message, stacklevel=2) + return QMCQuadResult(-np.inf if log else 0, 0) + + i_swap = b < a + sign = (-1)**(i_swap.sum(axis=-1)) # odd # of swaps -> negative + a[i_swap], b[i_swap] = b[i_swap], a[i_swap] + + A = np.prod(b - a) + dA = A / n_points + + estimates = np.zeros(n_estimates) + rngs = _rng_spawn(qrng.rng, n_estimates) + for i in range(n_estimates): + # Generate integral estimate + sample = qrng.random(n_points) + # The rationale for transposing is that this allows users to easily + # unpack `x` into separate variables, if desired. This is consistent + # with the `xx` array passed into the `scipy.integrate.nquad` `func`. + x = stats.qmc.scale(sample, a, b).T # (n_dim, n_points) + integrands = func(x) + estimates[i] = sum_product(integrands, dA, log) + + # Get a new, independently-scrambled QRNG for next time + qrng = type(qrng)(seed=rngs[i], **qrng._init_quad) + + integral = mean(estimates, log) + standard_error = sem(estimates, m=integral, log=log) + integral = integral + np.pi*1j if (log and sign < 0) else integral*sign + return QMCQuadResult(integral, standard_error) +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file diff --git a/_modules/scipy/ndimage/_filters.html b/_modules/scipy/ndimage/_filters.html new file mode 100644 index 0000000..3236b1c --- /dev/null +++ b/_modules/scipy/ndimage/_filters.html @@ -0,0 +1,2205 @@ + + + + + + + + + + scipy.ndimage._filters — pyudv documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + +
+ +
+ + +
+
+ +
+
+ +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + +
+ +

Source code for scipy.ndimage._filters

+# Copyright (C) 2003-2005 Peter J. Verveer
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above
+#    copyright notice, this list of conditions and the following
+#    disclaimer in the documentation and/or other materials provided
+#    with the distribution.
+#
+# 3. The name of the author may not be used to endorse or promote
+#    products derived from this software without specific prior
+#    written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from collections.abc import Iterable
+import numbers
+import warnings
+import numpy
+import operator
+from numpy.core.multiarray import normalize_axis_index
+from . import _ni_support
+from . import _nd_image
+from . import _ni_docstrings
+
+__all__ = ['correlate1d', 'convolve1d', 'gaussian_filter1d', 'gaussian_filter',
+           'prewitt', 'sobel', 'generic_laplace', 'laplace',
+           'gaussian_laplace', 'generic_gradient_magnitude',
+           'gaussian_gradient_magnitude', 'correlate', 'convolve',
+           'uniform_filter1d', 'uniform_filter', 'minimum_filter1d',
+           'maximum_filter1d', 'minimum_filter', 'maximum_filter',
+           'rank_filter', 'median_filter', 'percentile_filter',
+           'generic_filter1d', 'generic_filter']
+
+
+def _invalid_origin(origin, lenw):
+    return (origin < -(lenw // 2)) or (origin > (lenw - 1) // 2)
+
+
+def _complex_via_real_components(func, input, weights, output, cval, **kwargs):
+    """Complex convolution via a linear combination of real convolutions."""
+    complex_input = input.dtype.kind == 'c'
+    complex_weights = weights.dtype.kind == 'c'
+    if complex_input and complex_weights:
+        # real component of the output
+        func(input.real, weights.real, output=output.real,
+             cval=numpy.real(cval), **kwargs)
+        output.real -= func(input.imag, weights.imag, output=None,
+                            cval=numpy.imag(cval), **kwargs)
+        # imaginary component of the output
+        func(input.real, weights.imag, output=output.imag,
+             cval=numpy.real(cval), **kwargs)
+        output.imag += func(input.imag, weights.real, output=None,
+                            cval=numpy.imag(cval), **kwargs)
+    elif complex_input:
+        func(input.real, weights, output=output.real, cval=numpy.real(cval),
+             **kwargs)
+        func(input.imag, weights, output=output.imag, cval=numpy.imag(cval),
+             **kwargs)
+    else:
+        if numpy.iscomplexobj(cval):
+            raise ValueError("Cannot provide a complex-valued cval when the "
+                             "input is real.")
+        func(input, weights.real, output=output.real, cval=cval, **kwargs)
+        func(input, weights.imag, output=output.imag, cval=cval, **kwargs)
+    return output
+
+
+@_ni_docstrings.docfiller
+def correlate1d(input, weights, axis=-1, output=None, mode="reflect",
+                cval=0.0, origin=0):
+    """Calculate a 1-D correlation along the given axis.
+
+    The lines of the array along the given axis are correlated with the
+    given weights.
+
+    Parameters
+    ----------
+    %(input)s
+    weights : array
+        1-D sequence of numbers.
+    %(axis)s
+    %(output)s
+    %(mode_reflect)s
+    %(cval)s
+    %(origin)s
+
+    Examples
+    --------
+    >>> from scipy.ndimage import correlate1d
+    >>> correlate1d([2, 8, 0, 4, 1, 9, 9, 0], weights=[1, 3])
+    array([ 8, 26,  8, 12,  7, 28, 36,  9])
+    """
+    input = numpy.asarray(input)
+    weights = numpy.asarray(weights)
+    complex_input = input.dtype.kind == 'c'
+    complex_weights = weights.dtype.kind == 'c'
+    if complex_input or complex_weights:
+        if complex_weights:
+            weights = weights.conj()
+            weights = weights.astype(numpy.complex128, copy=False)
+        kwargs = dict(axis=axis, mode=mode, origin=origin)
+        output = _ni_support._get_output(output, input, complex_output=True)
+        return _complex_via_real_components(correlate1d, input, weights,
+                                            output, cval, **kwargs)
+
+    output = _ni_support._get_output(output, input)
+    weights = numpy.asarray(weights, dtype=numpy.float64)
+    if weights.ndim != 1 or weights.shape[0] < 1:
+        raise RuntimeError('no filter weights given')
+    if not weights.flags.contiguous:
+        weights = weights.copy()
+    axis = normalize_axis_index(axis, input.ndim)
+    if _invalid_origin(origin, len(weights)):
+        raise ValueError('Invalid origin; origin must satisfy '
+                         '-(len(weights) // 2) <= origin <= '
+                         '(len(weights)-1) // 2')
+    mode = _ni_support._extend_mode_to_code(mode)
+    _nd_image.correlate1d(input, weights, axis, output, mode, cval,
+                          origin)
+    return output
+
+
+@_ni_docstrings.docfiller
+def convolve1d(input, weights, axis=-1, output=None, mode="reflect",
+               cval=0.0, origin=0):
+    """Calculate a 1-D convolution along the given axis.
+
+    The lines of the array along the given axis are convolved with the
+    given weights.
+
+    Parameters
+    ----------
+    %(input)s
+    weights : ndarray
+        1-D sequence of numbers.
+    %(axis)s
+    %(output)s
+    %(mode_reflect)s
+    %(cval)s
+    %(origin)s
+
+    Returns
+    -------
+    convolve1d : ndarray
+        Convolved array with same shape as input
+
+    Examples
+    --------
+    >>> from scipy.ndimage import convolve1d
+    >>> convolve1d([2, 8, 0, 4, 1, 9, 9, 0], weights=[1, 3])
+    array([14, 24,  4, 13, 12, 36, 27,  0])
+    """
+    weights = weights[::-1]
+    origin = -origin
+    if not len(weights) & 1:
+        origin -= 1
+    weights = numpy.asarray(weights)
+    if weights.dtype.kind == 'c':
+        # pre-conjugate here to counteract the conjugation in correlate1d
+        weights = weights.conj()
+    return correlate1d(input, weights, axis, output, mode, cval, origin)
+
+
+def _gaussian_kernel1d(sigma, order, radius):
+    """
+    Computes a 1-D Gaussian convolution kernel.
+    """
+    if order < 0:
+        raise ValueError('order must be non-negative')
+    exponent_range = numpy.arange(order + 1)
+    sigma2 = sigma * sigma
+    x = numpy.arange(-radius, radius+1)
+    phi_x = numpy.exp(-0.5 / sigma2 * x ** 2)
+    phi_x = phi_x / phi_x.sum()
+
+    if order == 0:
+        return phi_x
+    else:
+        # f(x) = q(x) * phi(x) = q(x) * exp(p(x))
+        # f'(x) = (q'(x) + q(x) * p'(x)) * phi(x)
+        # p'(x) = -1 / sigma ** 2
+        # Implement q'(x) + q(x) * p'(x) as a matrix operator and apply to the
+        # coefficients of q(x)
+        q = numpy.zeros(order + 1)
+        q[0] = 1
+        D = numpy.diag(exponent_range[1:], 1)  # D @ q(x) = q'(x)
+        P = numpy.diag(numpy.ones(order)/-sigma2, -1)  # P @ q(x) = q(x) * p'(x)
+        Q_deriv = D + P
+        for _ in range(order):
+            q = Q_deriv.dot(q)
+        q = (x[:, None] ** exponent_range).dot(q)
+        return q * phi_x
+
+
+@_ni_docstrings.docfiller
+def gaussian_filter1d(input, sigma, axis=-1, order=0, output=None,
+                      mode="reflect", cval=0.0, truncate=4.0, *, radius=None):
+    """1-D Gaussian filter.
+
+    Parameters
+    ----------
+    %(input)s
+    sigma : scalar
+        standard deviation for Gaussian kernel
+    %(axis)s
+    order : int, optional
+        An order of 0 corresponds to convolution with a Gaussian
+        kernel. A positive order corresponds to convolution with
+        that derivative of a Gaussian.
+    %(output)s
+    %(mode_reflect)s
+    %(cval)s
+    truncate : float, optional
+        Truncate the filter at this many standard deviations.
+        Default is 4.0.
+    radius : None or int, optional
+        Radius of the Gaussian kernel. If specified, the size of
+        the kernel will be ``2*radius + 1``, and `truncate` is ignored.
+        Default is None.
+
+    Returns
+    -------
+    gaussian_filter1d : ndarray
+
+    Notes
+    -----
+    The Gaussian kernel will have size ``2*radius + 1`` along each axis. If
+    `radius` is None, a default ``radius = round(truncate * sigma)`` will be
+    used.
+
+    Examples
+    --------
+    >>> from scipy.ndimage import gaussian_filter1d
+    >>> import numpy as np
+    >>> gaussian_filter1d([1.0, 2.0, 3.0, 4.0, 5.0], 1)
+    array([ 1.42704095,  2.06782203,  3.        ,  3.93217797,  4.57295905])
+    >>> gaussian_filter1d([1.0, 2.0, 3.0, 4.0, 5.0], 4)
+    array([ 2.91948343,  2.95023502,  3.        ,  3.04976498,  3.08051657])
+    >>> import matplotlib.pyplot as plt
+    >>> rng = np.random.default_rng()
+    >>> x = rng.standard_normal(101).cumsum()
+    >>> y3 = gaussian_filter1d(x, 3)
+    >>> y6 = gaussian_filter1d(x, 6)
+    >>> plt.plot(x, 'k', label='original data')
+    >>> plt.plot(y3, '--', label='filtered, sigma=3')
+    >>> plt.plot(y6, ':', label='filtered, sigma=6')
+    >>> plt.legend()
+    >>> plt.grid()
+    >>> plt.show()
+
+    """
+    sd = float(sigma)
+    # make the radius of the filter equal to truncate standard deviations
+    lw = int(truncate * sd + 0.5)
+    if radius is not None:
+        lw = radius
+    if not isinstance(lw, numbers.Integral) or lw < 0:
+        raise ValueError('Radius must be a nonnegative integer.')
+    # Since we are calling correlate, not convolve, revert the kernel
+    weights = _gaussian_kernel1d(sigma, order, lw)[::-1]
+    return correlate1d(input, weights, axis, output, mode, cval, 0)
+
+
+@_ni_docstrings.docfiller
+def gaussian_filter(input, sigma, order=0, output=None,
+                    mode="reflect", cval=0.0, truncate=4.0, *, radius=None,
+                    axes=None):
+    """Multidimensional Gaussian filter.
+
+    Parameters
+    ----------
+    %(input)s
+    sigma : scalar or sequence of scalars
+        Standard deviation for Gaussian kernel. The standard
+        deviations of the Gaussian filter are given for each axis as a
+        sequence, or as a single number, in which case it is equal for
+        all axes.
+    order : int or sequence of ints, optional
+        The order of the filter along each axis is given as a sequence
+        of integers, or as a single number. An order of 0 corresponds
+        to convolution with a Gaussian kernel. A positive order
+        corresponds to convolution with that derivative of a Gaussian.
+    %(output)s
+    %(mode_multiple)s
+    %(cval)s
+    truncate : float, optional
+        Truncate the filter at this many standard deviations.
+        Default is 4.0.
+    radius : None or int or sequence of ints, optional
+        Radius of the Gaussian kernel. The radius are given for each axis
+        as a sequence, or as a single number, in which case it is equal
+        for all axes. If specified, the size of the kernel along each axis
+        will be ``2*radius + 1``, and `truncate` is ignored.
+        Default is None.
+    axes : tuple of int or None, optional
+        If None, `input` is filtered along all axes. Otherwise,
+        `input` is filtered along the specified axes. When `axes` is
+        specified, any tuples used for `sigma`, `order`, `mode` and/or `radius`
+        must match the length of `axes`. The ith entry in any of these tuples
+        corresponds to the ith entry in `axes`.
+
+    Returns
+    -------
+    gaussian_filter : ndarray
+        Returned array of same shape as `input`.
+
+    Notes
+    -----
+    The multidimensional filter is implemented as a sequence of
+    1-D convolution filters. The intermediate arrays are
+    stored in the same data type as the output. Therefore, for output
+    types with a limited precision, the results may be imprecise
+    because intermediate results may be stored with insufficient
+    precision.
+
+    The Gaussian kernel will have size ``2*radius + 1`` along each axis. If
+    `radius` is None, the default ``radius = round(truncate * sigma)`` will be
+    used.
+
+    Examples
+    --------
+    >>> from scipy.ndimage import gaussian_filter
+    >>> import numpy as np
+    >>> a = np.arange(50, step=2).reshape((5,5))
+    >>> a
+    array([[ 0,  2,  4,  6,  8],
+           [10, 12, 14, 16, 18],
+           [20, 22, 24, 26, 28],
+           [30, 32, 34, 36, 38],
+           [40, 42, 44, 46, 48]])
+    >>> gaussian_filter(a, sigma=1)
+    array([[ 4,  6,  8,  9, 11],
+           [10, 12, 14, 15, 17],
+           [20, 22, 24, 25, 27],
+           [29, 31, 33, 34, 36],
+           [35, 37, 39, 40, 42]])
+
+    >>> from scipy import datasets
+    >>> import matplotlib.pyplot as plt
+    >>> fig = plt.figure()
+    >>> plt.gray()  # show the filtered result in grayscale
+    >>> ax1 = fig.add_subplot(121)  # left side
+    >>> ax2 = fig.add_subplot(122)  # right side
+    >>> ascent = datasets.ascent()
+    >>> result = gaussian_filter(ascent, sigma=5)
+    >>> ax1.imshow(ascent)
+    >>> ax2.imshow(result)
+    >>> plt.show()
+    """
+    input = numpy.asarray(input)
+    output = _ni_support._get_output(output, input)
+
+    axes = _ni_support._check_axes(axes, input.ndim)
+    num_axes = len(axes)
+    orders = _ni_support._normalize_sequence(order, num_axes)
+    sigmas = _ni_support._normalize_sequence(sigma, num_axes)
+    modes = _ni_support._normalize_sequence(mode, num_axes)
+    radiuses = _ni_support._normalize_sequence(radius, num_axes)
+    axes = [(axes[ii], sigmas[ii], orders[ii], modes[ii], radiuses[ii])
+            for ii in range(num_axes) if sigmas[ii] > 1e-15]
+    if len(axes) > 0:
+        for axis, sigma, order, mode, radius in axes:
+            gaussian_filter1d(input, sigma, axis, order, output,
+                              mode, cval, truncate, radius=radius)
+            input = output
+    else:
+        output[...] = input[...]
+    return output
+
+
+@_ni_docstrings.docfiller
+def prewitt(input, axis=-1, output=None, mode="reflect", cval=0.0):
+    """Calculate a Prewitt filter.
+
+    Parameters
+    ----------
+    %(input)s
+    %(axis)s
+    %(output)s
+    %(mode_multiple)s
+    %(cval)s
+
+    Examples
+    --------
+    >>> from scipy import ndimage, datasets
+    >>> import matplotlib.pyplot as plt
+    >>> fig = plt.figure()
+    >>> plt.gray()  # show the filtered result in grayscale
+    >>> ax1 = fig.add_subplot(121)  # left side
+    >>> ax2 = fig.add_subplot(122)  # right side
+    >>> ascent = datasets.ascent()
+    >>> result = ndimage.prewitt(ascent)
+    >>> ax1.imshow(ascent)
+    >>> ax2.imshow(result)
+    >>> plt.show()
+    """
+    input = numpy.asarray(input)
+    axis = normalize_axis_index(axis, input.ndim)
+    output = _ni_support._get_output(output, input)
+    modes = _ni_support._normalize_sequence(mode, input.ndim)
+    correlate1d(input, [-1, 0, 1], axis, output, modes[axis], cval, 0)
+    axes = [ii for ii in range(input.ndim) if ii != axis]
+    for ii in axes:
+        correlate1d(output, [1, 1, 1], ii, output, modes[ii], cval, 0,)
+    return output
+
+
+@_ni_docstrings.docfiller
+def sobel(input, axis=-1, output=None, mode="reflect", cval=0.0):
+    """Calculate a Sobel filter.
+
+    Parameters
+    ----------
+    %(input)s
+    %(axis)s
+    %(output)s
+    %(mode_multiple)s
+    %(cval)s
+
+    Notes
+    -----
+    This function computes the axis-specific Sobel gradient.
+    The horizontal edges can emphasised with the horizontal trasform (axis=0),
+    the vertical edges with the vertical transform (axis=1) and so on for higher
+    dimensions. These can be combined to give the magnitude.
+
+    Examples
+    --------
+    >>> from scipy import ndimage, datasets
+    >>> import matplotlib.pyplot as plt
+    >>> import numpy as np
+    >>> ascent = datasets.ascent().astype('int32')
+    >>> sobel_h = ndimage.sobel(ascent, 0)  # horizontal gradient
+    >>> sobel_v = ndimage.sobel(ascent, 1)  # vertical gradient
+    >>> magnitude = np.sqrt(sobel_h**2 + sobel_v**2)
+    >>> magnitude *= 255.0 / np.max(magnitude)  # normalization
+    >>> fig, axs = plt.subplots(2, 2, figsize=(8, 8))
+    >>> plt.gray()  # show the filtered result in grayscale
+    >>> axs[0, 0].imshow(ascent)
+    >>> axs[0, 1].imshow(sobel_h)
+    >>> axs[1, 0].imshow(sobel_v)
+    >>> axs[1, 1].imshow(magnitude)
+    >>> titles = ["original", "horizontal", "vertical", "magnitude"]
+    >>> for i, ax in enumerate(axs.ravel()):
+    ...     ax.set_title(titles[i])
+    ...     ax.axis("off")
+    >>> plt.show()
+
+    """
+    input = numpy.asarray(input)
+    axis = normalize_axis_index(axis, input.ndim)
+    output = _ni_support._get_output(output, input)
+    modes = _ni_support._normalize_sequence(mode, input.ndim)
+    correlate1d(input, [-1, 0, 1], axis, output, modes[axis], cval, 0)
+    axes = [ii for ii in range(input.ndim) if ii != axis]
+    for ii in axes:
+        correlate1d(output, [1, 2, 1], ii, output, modes[ii], cval, 0)
+    return output
+
+
+@_ni_docstrings.docfiller
+def generic_laplace(input, derivative2, output=None, mode="reflect",
+                    cval=0.0,
+                    extra_arguments=(),
+                    extra_keywords=None):
+    """
+    N-D Laplace filter using a provided second derivative function.
+
+    Parameters
+    ----------
+    %(input)s
+    derivative2 : callable
+        Callable with the following signature::
+
+            derivative2(input, axis, output, mode, cval,
+                        *extra_arguments, **extra_keywords)
+
+        See `extra_arguments`, `extra_keywords` below.
+    %(output)s
+    %(mode_multiple)s
+    %(cval)s
+    %(extra_keywords)s
+    %(extra_arguments)s
+    """
+    if extra_keywords is None:
+        extra_keywords = {}
+    input = numpy.asarray(input)
+    output = _ni_support._get_output(output, input)
+    axes = list(range(input.ndim))
+    if len(axes) > 0:
+        modes = _ni_support._normalize_sequence(mode, len(axes))
+        derivative2(input, axes[0], output, modes[0], cval,
+                    *extra_arguments, **extra_keywords)
+        for ii in range(1, len(axes)):
+            tmp = derivative2(input, axes[ii], output.dtype, modes[ii], cval,
+                              *extra_arguments, **extra_keywords)
+            output += tmp
+    else:
+        output[...] = input[...]
+    return output
+
+
+@_ni_docstrings.docfiller
+def laplace(input, output=None, mode="reflect", cval=0.0):
+    """N-D Laplace filter based on approximate second derivatives.
+
+    Parameters
+    ----------
+    %(input)s
+    %(output)s
+    %(mode_multiple)s
+    %(cval)s
+
+    Examples
+    --------
+    >>> from scipy import ndimage, datasets
+    >>> import matplotlib.pyplot as plt
+    >>> fig = plt.figure()
+    >>> plt.gray()  # show the filtered result in grayscale
+    >>> ax1 = fig.add_subplot(121)  # left side
+    >>> ax2 = fig.add_subplot(122)  # right side
+    >>> ascent = datasets.ascent()
+    >>> result = ndimage.laplace(ascent)
+    >>> ax1.imshow(ascent)
+    >>> ax2.imshow(result)
+    >>> plt.show()
+    """
+    def derivative2(input, axis, output, mode, cval):
+        return correlate1d(input, [1, -2, 1], axis, output, mode, cval, 0)
+    return generic_laplace(input, derivative2, output, mode, cval)
+
+
+@_ni_docstrings.docfiller
+def gaussian_laplace(input, sigma, output=None, mode="reflect",
+                     cval=0.0, **kwargs):
+    """Multidimensional Laplace filter using Gaussian second derivatives.
+
+    Parameters
+    ----------
+    %(input)s
+    sigma : scalar or sequence of scalars
+        The standard deviations of the Gaussian filter are given for
+        each axis as a sequence, or as a single number, in which case
+        it is equal for all axes.
+    %(output)s
+    %(mode_multiple)s
+    %(cval)s
+    Extra keyword arguments will be passed to gaussian_filter().
+
+    Examples
+    --------
+    >>> from scipy import ndimage, datasets
+    >>> import matplotlib.pyplot as plt
+    >>> ascent = datasets.ascent()
+
+    >>> fig = plt.figure()
+    >>> plt.gray()  # show the filtered result in grayscale
+    >>> ax1 = fig.add_subplot(121)  # left side
+    >>> ax2 = fig.add_subplot(122)  # right side
+
+    >>> result = ndimage.gaussian_laplace(ascent, sigma=1)
+    >>> ax1.imshow(result)
+
+    >>> result = ndimage.gaussian_laplace(ascent, sigma=3)
+    >>> ax2.imshow(result)
+    >>> plt.show()
+    """
+    input = numpy.asarray(input)
+
+    def derivative2(input, axis, output, mode, cval, sigma, **kwargs):
+        order = [0] * input.ndim
+        order[axis] = 2
+        return gaussian_filter(input, sigma, order, output, mode, cval,
+                               **kwargs)
+
+    return generic_laplace(input, derivative2, output, mode, cval,
+                           extra_arguments=(sigma,),
+                           extra_keywords=kwargs)
+
+
+@_ni_docstrings.docfiller
+def generic_gradient_magnitude(input, derivative, output=None,
+                               mode="reflect", cval=0.0,
+                               extra_arguments=(), extra_keywords=None):
+    """Gradient magnitude using a provided gradient function.
+
+    Parameters
+    ----------
+    %(input)s
+    derivative : callable
+        Callable with the following signature::
+
+            derivative(input, axis, output, mode, cval,
+                       *extra_arguments, **extra_keywords)
+
+        See `extra_arguments`, `extra_keywords` below.
+        `derivative` can assume that `input` and `output` are ndarrays.
+        Note that the output from `derivative` is modified inplace;
+        be careful to copy important inputs before returning them.
+    %(output)s
+    %(mode_multiple)s
+    %(cval)s
+    %(extra_keywords)s
+    %(extra_arguments)s
+    """
+    if extra_keywords is None:
+        extra_keywords = {}
+    input = numpy.asarray(input)
+    output = _ni_support._get_output(output, input)
+    axes = list(range(input.ndim))
+    if len(axes) > 0:
+        modes = _ni_support._normalize_sequence(mode, len(axes))
+        derivative(input, axes[0], output, modes[0], cval,
+                   *extra_arguments, **extra_keywords)
+        numpy.multiply(output, output, output)
+        for ii in range(1, len(axes)):
+            tmp = derivative(input, axes[ii], output.dtype, modes[ii], cval,
+                             *extra_arguments, **extra_keywords)
+            numpy.multiply(tmp, tmp, tmp)
+            output += tmp
+        # This allows the sqrt to work with a different default casting
+        numpy.sqrt(output, output, casting='unsafe')
+    else:
+        output[...] = input[...]
+    return output
+
+
+@_ni_docstrings.docfiller
+def gaussian_gradient_magnitude(input, sigma, output=None,
+                                mode="reflect", cval=0.0, **kwargs):
+    """Multidimensional gradient magnitude using Gaussian derivatives.
+
+    Parameters
+    ----------
+    %(input)s
+    sigma : scalar or sequence of scalars
+        The standard deviations of the Gaussian filter are given for
+        each axis as a sequence, or as a single number, in which case
+        it is equal for all axes.
+    %(output)s
+    %(mode_multiple)s
+    %(cval)s
+    Extra keyword arguments will be passed to gaussian_filter().
+
+    Returns
+    -------
+    gaussian_gradient_magnitude : ndarray
+        Filtered array. Has the same shape as `input`.
+
+    Examples
+    --------
+    >>> from scipy import ndimage, datasets
+    >>> import matplotlib.pyplot as plt
+    >>> fig = plt.figure()
+    >>> plt.gray()  # show the filtered result in grayscale
+    >>> ax1 = fig.add_subplot(121)  # left side
+    >>> ax2 = fig.add_subplot(122)  # right side
+    >>> ascent = datasets.ascent()
+    >>> result = ndimage.gaussian_gradient_magnitude(ascent, sigma=5)
+    >>> ax1.imshow(ascent)
+    >>> ax2.imshow(result)
+    >>> plt.show()
+    """
+    input = numpy.asarray(input)
+
+    def derivative(input, axis, output, mode, cval, sigma, **kwargs):
+        order = [0] * input.ndim
+        order[axis] = 1
+        return gaussian_filter(input, sigma, order, output, mode,
+                               cval, **kwargs)
+
+    return generic_gradient_magnitude(input, derivative, output, mode,
+                                      cval, extra_arguments=(sigma,),
+                                      extra_keywords=kwargs)
+
+
+def _correlate_or_convolve(input, weights, output, mode, cval, origin,
+                           convolution):
+    input = numpy.asarray(input)
+    weights = numpy.asarray(weights)
+    complex_input = input.dtype.kind == 'c'
+    complex_weights = weights.dtype.kind == 'c'
+    if complex_input or complex_weights:
+        if complex_weights and not convolution:
+            # As for numpy.correlate, conjugate weights rather than input.
+            weights = weights.conj()
+        kwargs = dict(
+            mode=mode, origin=origin, convolution=convolution
+        )
+        output = _ni_support._get_output(output, input, complex_output=True)
+
+        return _complex_via_real_components(_correlate_or_convolve, input,
+                                            weights, output, cval, **kwargs)
+
+    origins = _ni_support._normalize_sequence(origin, input.ndim)
+    weights = numpy.asarray(weights, dtype=numpy.float64)
+    wshape = [ii for ii in weights.shape if ii > 0]
+    if len(wshape) != input.ndim:
+        raise RuntimeError('filter weights array has incorrect shape.')
+    if convolution:
+        weights = weights[tuple([slice(None, None, -1)] * weights.ndim)]
+        for ii in range(len(origins)):
+            origins[ii] = -origins[ii]
+            if not weights.shape[ii] & 1:
+                origins[ii] -= 1
+    for origin, lenw in zip(origins, wshape):
+        if _invalid_origin(origin, lenw):
+            raise ValueError('Invalid origin; origin must satisfy '
+                             '-(weights.shape[k] // 2) <= origin[k] <= '
+                             '(weights.shape[k]-1) // 2')
+
+    if not weights.flags.contiguous:
+        weights = weights.copy()
+    output = _ni_support._get_output(output, input)
+    temp_needed = numpy.may_share_memory(input, output)
+    if temp_needed:
+        # input and output arrays cannot share memory
+        temp = output
+        output = _ni_support._get_output(output.dtype, input)
+    if not isinstance(mode, str) and isinstance(mode, Iterable):
+        raise RuntimeError("A sequence of modes is not supported")
+    mode = _ni_support._extend_mode_to_code(mode)
+    _nd_image.correlate(input, weights, output, mode, cval, origins)
+    if temp_needed:
+        temp[...] = output
+        output = temp
+    return output
+
+
+@_ni_docstrings.docfiller
+def correlate(input, weights, output=None, mode='reflect', cval=0.0,
+              origin=0):
+    """
+    Multidimensional correlation.
+
+    The array is correlated with the given kernel.
+
+    Parameters
+    ----------
+    %(input)s
+    weights : ndarray
+        array of weights, same number of dimensions as input
+    %(output)s
+    %(mode_reflect)s
+    %(cval)s
+    %(origin_multiple)s
+
+    Returns
+    -------
+    result : ndarray
+        The result of correlation of `input` with `weights`.
+
+    See Also
+    --------
+    convolve : Convolve an image with a kernel.
+
+    Examples
+    --------
+    Correlation is the process of moving a filter mask often referred to
+    as kernel over the image and computing the sum of products at each location.
+
+    >>> from scipy.ndimage import correlate
+    >>> import numpy as np
+    >>> input_img = np.arange(25).reshape(5,5)
+    >>> print(input_img)
+    [[ 0  1  2  3  4]
+    [ 5  6  7  8  9]
+    [10 11 12 13 14]
+    [15 16 17 18 19]
+    [20 21 22 23 24]]
+
+    Define a kernel (weights) for correlation. In this example, it is for sum of
+    center and up, down, left and right next elements.
+
+    >>> weights = [[0, 1, 0],
+    ...            [1, 1, 1],
+    ...            [0, 1, 0]]
+
+    We can calculate a correlation result:
+    For example, element ``[2,2]`` is ``7 + 11 + 12 + 13 + 17 = 60``.
+
+    >>> correlate(input_img, weights)
+    array([[  6,  10,  15,  20,  24],
+        [ 26,  30,  35,  40,  44],
+        [ 51,  55,  60,  65,  69],
+        [ 76,  80,  85,  90,  94],
+        [ 96, 100, 105, 110, 114]])
+
+    """
+    return _correlate_or_convolve(input, weights, output, mode, cval,
+                                  origin, False)
+
+
+@_ni_docstrings.docfiller
+def convolve(input, weights, output=None, mode='reflect', cval=0.0,
+             origin=0):
+    """
+    Multidimensional convolution.
+
+    The array is convolved with the given kernel.
+
+    Parameters
+    ----------
+    %(input)s
+    weights : array_like
+        Array of weights, same number of dimensions as input
+    %(output)s
+    %(mode_reflect)s
+    cval : scalar, optional
+        Value to fill past edges of input if `mode` is 'constant'. Default
+        is 0.0
+    origin : int, optional
+        Controls the origin of the input signal, which is where the
+        filter is centered to produce the first element of the output.
+        Positive values shift the filter to the right, and negative values
+        shift the filter to the left. Default is 0.
+
+    Returns
+    -------
+    result : ndarray
+        The result of convolution of `input` with `weights`.
+
+    See Also
+    --------
+    correlate : Correlate an image with a kernel.
+
+    Notes
+    -----
+    Each value in result is :math:`C_i = \\sum_j{I_{i+k-j} W_j}`, where
+    W is the `weights` kernel,
+    j is the N-D spatial index over :math:`W`,
+    I is the `input` and k is the coordinate of the center of
+    W, specified by `origin` in the input parameters.
+
+    Examples
+    --------
+    Perhaps the simplest case to understand is ``mode='constant', cval=0.0``,
+    because in this case borders (i.e., where the `weights` kernel, centered
+    on any one value, extends beyond an edge of `input`) are treated as zeros.
+
+    >>> import numpy as np
+    >>> a = np.array([[1, 2, 0, 0],
+    ...               [5, 3, 0, 4],
+    ...               [0, 0, 0, 7],
+    ...               [9, 3, 0, 0]])
+    >>> k = np.array([[1,1,1],[1,1,0],[1,0,0]])
+    >>> from scipy import ndimage
+    >>> ndimage.convolve(a, k, mode='constant', cval=0.0)
+    array([[11, 10,  7,  4],
+           [10,  3, 11, 11],
+           [15, 12, 14,  7],
+           [12,  3,  7,  0]])
+
+    Setting ``cval=1.0`` is equivalent to padding the outer edge of `input`
+    with 1.0's (and then extracting only the original region of the result).
+
+    >>> ndimage.convolve(a, k, mode='constant', cval=1.0)
+    array([[13, 11,  8,  7],
+           [11,  3, 11, 14],
+           [16, 12, 14, 10],
+           [15,  6, 10,  5]])
+
+    With ``mode='reflect'`` (the default), outer values are reflected at the
+    edge of `input` to fill in missing values.
+
+    >>> b = np.array([[2, 0, 0],
+    ...               [1, 0, 0],
+    ...               [0, 0, 0]])
+    >>> k = np.array([[0,1,0], [0,1,0], [0,1,0]])
+    >>> ndimage.convolve(b, k, mode='reflect')
+    array([[5, 0, 0],
+           [3, 0, 0],
+           [1, 0, 0]])
+
+    This includes diagonally at the corners.
+
+    >>> k = np.array([[1,0,0],[0,1,0],[0,0,1]])
+    >>> ndimage.convolve(b, k)
+    array([[4, 2, 0],
+           [3, 2, 0],
+           [1, 1, 0]])
+
+    With ``mode='nearest'``, the single nearest value in to an edge in
+    `input` is repeated as many times as needed to match the overlapping
+    `weights`.
+
+    >>> c = np.array([[2, 0, 1],
+    ...               [1, 0, 0],
+    ...               [0, 0, 0]])
+    >>> k = np.array([[0, 1, 0],
+    ...               [0, 1, 0],
+    ...               [0, 1, 0],
+    ...               [0, 1, 0],
+    ...               [0, 1, 0]])
+    >>> ndimage.convolve(c, k, mode='nearest')
+    array([[7, 0, 3],
+           [5, 0, 2],
+           [3, 0, 1]])
+
+    """
+    return _correlate_or_convolve(input, weights, output, mode, cval,
+                                  origin, True)
+
+
+
+[docs] +@_ni_docstrings.docfiller +def uniform_filter1d(input, size, axis=-1, output=None, + mode="reflect", cval=0.0, origin=0): + """Calculate a 1-D uniform filter along the given axis. + + The lines of the array along the given axis are filtered with a + uniform filter of given size. + + Parameters + ---------- + %(input)s + size : int + length of uniform filter + %(axis)s + %(output)s + %(mode_reflect)s + %(cval)s + %(origin)s + + Examples + -------- + >>> from scipy.ndimage import uniform_filter1d + >>> uniform_filter1d([2, 8, 0, 4, 1, 9, 9, 0], size=3) + array([4, 3, 4, 1, 4, 6, 6, 3]) + """ + input = numpy.asarray(input) + axis = normalize_axis_index(axis, input.ndim) + if size < 1: + raise RuntimeError('incorrect filter size') + complex_output = input.dtype.kind == 'c' + output = _ni_support._get_output(output, input, + complex_output=complex_output) + if (size // 2 + origin < 0) or (size // 2 + origin >= size): + raise ValueError('invalid origin') + mode = _ni_support._extend_mode_to_code(mode) + if not complex_output: + _nd_image.uniform_filter1d(input, size, axis, output, mode, cval, + origin) + else: + _nd_image.uniform_filter1d(input.real, size, axis, output.real, mode, + numpy.real(cval), origin) + _nd_image.uniform_filter1d(input.imag, size, axis, output.imag, mode, + numpy.imag(cval), origin) + return output
+ + + +
+[docs] +@_ni_docstrings.docfiller +def uniform_filter(input, size=3, output=None, mode="reflect", + cval=0.0, origin=0, *, axes=None): + """Multidimensional uniform filter. + + Parameters + ---------- + %(input)s + size : int or sequence of ints, optional + The sizes of the uniform filter are given for each axis as a + sequence, or as a single number, in which case the size is + equal for all axes. + %(output)s + %(mode_multiple)s + %(cval)s + %(origin_multiple)s + axes : tuple of int or None, optional + If None, `input` is filtered along all axes. Otherwise, + `input` is filtered along the specified axes. When `axes` is + specified, any tuples used for `size`, `origin`, and/or `mode` + must match the length of `axes`. The ith entry in any of these tuples + corresponds to the ith entry in `axes`. + + Returns + ------- + uniform_filter : ndarray + Filtered array. Has the same shape as `input`. + + Notes + ----- + The multidimensional filter is implemented as a sequence of + 1-D uniform filters. The intermediate arrays are stored + in the same data type as the output. Therefore, for output types + with a limited precision, the results may be imprecise because + intermediate results may be stored with insufficient precision. + + Examples + -------- + >>> from scipy import ndimage, datasets + >>> import matplotlib.pyplot as plt + >>> fig = plt.figure() + >>> plt.gray() # show the filtered result in grayscale + >>> ax1 = fig.add_subplot(121) # left side + >>> ax2 = fig.add_subplot(122) # right side + >>> ascent = datasets.ascent() + >>> result = ndimage.uniform_filter(ascent, size=20) + >>> ax1.imshow(ascent) + >>> ax2.imshow(result) + >>> plt.show() + """ + input = numpy.asarray(input) + output = _ni_support._get_output(output, input, + complex_output=input.dtype.kind == 'c') + axes = _ni_support._check_axes(axes, input.ndim) + num_axes = len(axes) + sizes = _ni_support._normalize_sequence(size, num_axes) + origins = _ni_support._normalize_sequence(origin, num_axes) + modes = _ni_support._normalize_sequence(mode, num_axes) + axes = [(axes[ii], sizes[ii], origins[ii], modes[ii]) + for ii in range(num_axes) if sizes[ii] > 1] + if len(axes) > 0: + for axis, size, origin, mode in axes: + uniform_filter1d(input, int(size), axis, output, mode, + cval, origin) + input = output + else: + output[...] = input[...] + return output
+ + + +@_ni_docstrings.docfiller +def minimum_filter1d(input, size, axis=-1, output=None, + mode="reflect", cval=0.0, origin=0): + """Calculate a 1-D minimum filter along the given axis. + + The lines of the array along the given axis are filtered with a + minimum filter of given size. + + Parameters + ---------- + %(input)s + size : int + length along which to calculate 1D minimum + %(axis)s + %(output)s + %(mode_reflect)s + %(cval)s + %(origin)s + + Notes + ----- + This function implements the MINLIST algorithm [1]_, as described by + Richard Harter [2]_, and has a guaranteed O(n) performance, `n` being + the `input` length, regardless of filter size. + + References + ---------- + .. [1] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.2777 + .. [2] http://www.richardhartersworld.com/cri/2001/slidingmin.html + + + Examples + -------- + >>> from scipy.ndimage import minimum_filter1d + >>> minimum_filter1d([2, 8, 0, 4, 1, 9, 9, 0], size=3) + array([2, 0, 0, 0, 1, 1, 0, 0]) + """ + input = numpy.asarray(input) + if numpy.iscomplexobj(input): + raise TypeError('Complex type not supported') + axis = normalize_axis_index(axis, input.ndim) + if size < 1: + raise RuntimeError('incorrect filter size') + output = _ni_support._get_output(output, input) + if (size // 2 + origin < 0) or (size // 2 + origin >= size): + raise ValueError('invalid origin') + mode = _ni_support._extend_mode_to_code(mode) + _nd_image.min_or_max_filter1d(input, size, axis, output, mode, cval, + origin, 1) + return output + + +@_ni_docstrings.docfiller +def maximum_filter1d(input, size, axis=-1, output=None, + mode="reflect", cval=0.0, origin=0): + """Calculate a 1-D maximum filter along the given axis. + + The lines of the array along the given axis are filtered with a + maximum filter of given size. + + Parameters + ---------- + %(input)s + size : int + Length along which to calculate the 1-D maximum. + %(axis)s + %(output)s + %(mode_reflect)s + %(cval)s + %(origin)s + + Returns + ------- + maximum1d : ndarray, None + Maximum-filtered array with same shape as input. + None if `output` is not None + + Notes + ----- + This function implements the MAXLIST algorithm [1]_, as described by + Richard Harter [2]_, and has a guaranteed O(n) performance, `n` being + the `input` length, regardless of filter size. + + References + ---------- + .. [1] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.2777 + .. [2] http://www.richardhartersworld.com/cri/2001/slidingmin.html + + Examples + -------- + >>> from scipy.ndimage import maximum_filter1d + >>> maximum_filter1d([2, 8, 0, 4, 1, 9, 9, 0], size=3) + array([8, 8, 8, 4, 9, 9, 9, 9]) + """ + input = numpy.asarray(input) + if numpy.iscomplexobj(input): + raise TypeError('Complex type not supported') + axis = normalize_axis_index(axis, input.ndim) + if size < 1: + raise RuntimeError('incorrect filter size') + output = _ni_support._get_output(output, input) + if (size // 2 + origin < 0) or (size // 2 + origin >= size): + raise ValueError('invalid origin') + mode = _ni_support._extend_mode_to_code(mode) + _nd_image.min_or_max_filter1d(input, size, axis, output, mode, cval, + origin, 0) + return output + + +def _min_or_max_filter(input, size, footprint, structure, output, mode, + cval, origin, minimum, axes=None): + if (size is not None) and (footprint is not None): + warnings.warn("ignoring size because footprint is set", UserWarning, stacklevel=3) + if structure is None: + if footprint is None: + if size is None: + raise RuntimeError("no footprint provided") + separable = True + else: + footprint = numpy.asarray(footprint, dtype=bool) + if not footprint.any(): + raise ValueError("All-zero footprint is not supported.") + if footprint.all(): + size = footprint.shape + footprint = None + separable = True + else: + separable = False + else: + structure = numpy.asarray(structure, dtype=numpy.float64) + separable = False + if footprint is None: + footprint = numpy.ones(structure.shape, bool) + else: + footprint = numpy.asarray(footprint, dtype=bool) + input = numpy.asarray(input) + if numpy.iscomplexobj(input): + raise TypeError('Complex type not supported') + output = _ni_support._get_output(output, input) + temp_needed = numpy.may_share_memory(input, output) + if temp_needed: + # input and output arrays cannot share memory + temp = output + output = _ni_support._get_output(output.dtype, input) + axes = _ni_support._check_axes(axes, input.ndim) + num_axes = len(axes) + if separable: + origins = _ni_support._normalize_sequence(origin, num_axes) + sizes = _ni_support._normalize_sequence(size, num_axes) + modes = _ni_support._normalize_sequence(mode, num_axes) + axes = [(axes[ii], sizes[ii], origins[ii], modes[ii]) + for ii in range(len(axes)) if sizes[ii] > 1] + if minimum: + filter_ = minimum_filter1d + else: + filter_ = maximum_filter1d + if len(axes) > 0: + for axis, size, origin, mode in axes: + filter_(input, int(size), axis, output, mode, cval, origin) + input = output + else: + output[...] = input[...] + else: + origins = _ni_support._normalize_sequence(origin, input.ndim) + if num_axes < input.ndim: + if footprint.ndim != num_axes: + raise RuntimeError("footprint array has incorrect shape") + footprint = numpy.expand_dims( + footprint, + tuple(ax for ax in range(input.ndim) if ax not in axes) + ) + fshape = [ii for ii in footprint.shape if ii > 0] + if len(fshape) != input.ndim: + raise RuntimeError('footprint array has incorrect shape.') + for origin, lenf in zip(origins, fshape): + if (lenf // 2 + origin < 0) or (lenf // 2 + origin >= lenf): + raise ValueError('invalid origin') + if not footprint.flags.contiguous: + footprint = footprint.copy() + if structure is not None: + if len(structure.shape) != input.ndim: + raise RuntimeError('structure array has incorrect shape') + if num_axes != structure.ndim: + structure = numpy.expand_dims( + structure, + tuple(ax for ax in range(structure.ndim) if ax not in axes) + ) + if not structure.flags.contiguous: + structure = structure.copy() + if not isinstance(mode, str) and isinstance(mode, Iterable): + raise RuntimeError( + "A sequence of modes is not supported for non-separable " + "footprints") + mode = _ni_support._extend_mode_to_code(mode) + _nd_image.min_or_max_filter(input, footprint, structure, output, + mode, cval, origins, minimum) + if temp_needed: + temp[...] = output + output = temp + return output + + +@_ni_docstrings.docfiller +def minimum_filter(input, size=None, footprint=None, output=None, + mode="reflect", cval=0.0, origin=0, *, axes=None): + """Calculate a multidimensional minimum filter. + + Parameters + ---------- + %(input)s + %(size_foot)s + %(output)s + %(mode_multiple)s + %(cval)s + %(origin_multiple)s + axes : tuple of int or None, optional + If None, `input` is filtered along all axes. Otherwise, + `input` is filtered along the specified axes. When `axes` is + specified, any tuples used for `size`, `origin`, and/or `mode` + must match the length of `axes`. The ith entry in any of these tuples + corresponds to the ith entry in `axes`. + + Returns + ------- + minimum_filter : ndarray + Filtered array. Has the same shape as `input`. + + Notes + ----- + A sequence of modes (one per axis) is only supported when the footprint is + separable. Otherwise, a single mode string must be provided. + + Examples + -------- + >>> from scipy import ndimage, datasets + >>> import matplotlib.pyplot as plt + >>> fig = plt.figure() + >>> plt.gray() # show the filtered result in grayscale + >>> ax1 = fig.add_subplot(121) # left side + >>> ax2 = fig.add_subplot(122) # right side + >>> ascent = datasets.ascent() + >>> result = ndimage.minimum_filter(ascent, size=20) + >>> ax1.imshow(ascent) + >>> ax2.imshow(result) + >>> plt.show() + """ + return _min_or_max_filter(input, size, footprint, None, output, mode, + cval, origin, 1, axes) + + +@_ni_docstrings.docfiller +def maximum_filter(input, size=None, footprint=None, output=None, + mode="reflect", cval=0.0, origin=0, *, axes=None): + """Calculate a multidimensional maximum filter. + + Parameters + ---------- + %(input)s + %(size_foot)s + %(output)s + %(mode_multiple)s + %(cval)s + %(origin_multiple)s + axes : tuple of int or None, optional + If None, `input` is filtered along all axes. Otherwise, + `input` is filtered along the specified axes. When `axes` is + specified, any tuples used for `size`, `origin`, and/or `mode` + must match the length of `axes`. The ith entry in any of these tuples + corresponds to the ith entry in `axes`. + + Returns + ------- + maximum_filter : ndarray + Filtered array. Has the same shape as `input`. + + Notes + ----- + A sequence of modes (one per axis) is only supported when the footprint is + separable. Otherwise, a single mode string must be provided. + + Examples + -------- + >>> from scipy import ndimage, datasets + >>> import matplotlib.pyplot as plt + >>> fig = plt.figure() + >>> plt.gray() # show the filtered result in grayscale + >>> ax1 = fig.add_subplot(121) # left side + >>> ax2 = fig.add_subplot(122) # right side + >>> ascent = datasets.ascent() + >>> result = ndimage.maximum_filter(ascent, size=20) + >>> ax1.imshow(ascent) + >>> ax2.imshow(result) + >>> plt.show() + """ + return _min_or_max_filter(input, size, footprint, None, output, mode, + cval, origin, 0, axes) + + +@_ni_docstrings.docfiller +def _rank_filter(input, rank, size=None, footprint=None, output=None, + mode="reflect", cval=0.0, origin=0, operation='rank', + axes=None): + if (size is not None) and (footprint is not None): + warnings.warn("ignoring size because footprint is set", UserWarning, stacklevel=3) + input = numpy.asarray(input) + if numpy.iscomplexobj(input): + raise TypeError('Complex type not supported') + axes = _ni_support._check_axes(axes, input.ndim) + num_axes = len(axes) + origins = _ni_support._normalize_sequence(origin, num_axes) + if footprint is None: + if size is None: + raise RuntimeError("no footprint or filter size provided") + sizes = _ni_support._normalize_sequence(size, num_axes) + footprint = numpy.ones(sizes, dtype=bool) + else: + footprint = numpy.asarray(footprint, dtype=bool) + if num_axes < input.ndim: + # set origin = 0 for any axes not being filtered + origins_temp = [0,] * input.ndim + for o, ax in zip(origins, axes): + origins_temp[ax] = o + origins = origins_temp + + if not isinstance(mode, str) and isinstance(mode, Iterable): + # set mode = 'constant' for any axes not being filtered + modes = _ni_support._normalize_sequence(mode, num_axes) + modes_temp = ['constant'] * input.ndim + for m, ax in zip(modes, axes): + modes_temp[ax] = m + mode = modes_temp + + # insert singleton dimension along any non-filtered axes + if footprint.ndim != num_axes: + raise RuntimeError("footprint array has incorrect shape") + footprint = numpy.expand_dims( + footprint, + tuple(ax for ax in range(input.ndim) if ax not in axes) + ) + fshape = [ii for ii in footprint.shape if ii > 0] + if len(fshape) != input.ndim: + raise RuntimeError('footprint array has incorrect shape.') + for origin, lenf in zip(origins, fshape): + if (lenf // 2 + origin < 0) or (lenf // 2 + origin >= lenf): + raise ValueError('invalid origin') + if not footprint.flags.contiguous: + footprint = footprint.copy() + filter_size = numpy.where(footprint, 1, 0).sum() + if operation == 'median': + rank = filter_size // 2 + elif operation == 'percentile': + percentile = rank + if percentile < 0.0: + percentile += 100.0 + if percentile < 0 or percentile > 100: + raise RuntimeError('invalid percentile') + if percentile == 100.0: + rank = filter_size - 1 + else: + rank = int(float(filter_size) * percentile / 100.0) + if rank < 0: + rank += filter_size + if rank < 0 or rank >= filter_size: + raise RuntimeError('rank not within filter footprint size') + if rank == 0: + return minimum_filter(input, None, footprint, output, mode, cval, + origins, axes=None) + elif rank == filter_size - 1: + return maximum_filter(input, None, footprint, output, mode, cval, + origins, axes=None) + else: + output = _ni_support._get_output(output, input) + temp_needed = numpy.may_share_memory(input, output) + if temp_needed: + # input and output arrays cannot share memory + temp = output + output = _ni_support._get_output(output.dtype, input) + if not isinstance(mode, str) and isinstance(mode, Iterable): + raise RuntimeError( + "A sequence of modes is not supported by non-separable rank " + "filters") + mode = _ni_support._extend_mode_to_code(mode) + _nd_image.rank_filter(input, rank, footprint, output, mode, cval, + origins) + if temp_needed: + temp[...] = output + output = temp + return output + + +@_ni_docstrings.docfiller +def rank_filter(input, rank, size=None, footprint=None, output=None, + mode="reflect", cval=0.0, origin=0, *, axes=None): + """Calculate a multidimensional rank filter. + + Parameters + ---------- + %(input)s + rank : int + The rank parameter may be less than zero, i.e., rank = -1 + indicates the largest element. + %(size_foot)s + %(output)s + %(mode_reflect)s + %(cval)s + %(origin_multiple)s + axes : tuple of int or None, optional + If None, `input` is filtered along all axes. Otherwise, + `input` is filtered along the specified axes. + + Returns + ------- + rank_filter : ndarray + Filtered array. Has the same shape as `input`. + + Examples + -------- + >>> from scipy import ndimage, datasets + >>> import matplotlib.pyplot as plt + >>> fig = plt.figure() + >>> plt.gray() # show the filtered result in grayscale + >>> ax1 = fig.add_subplot(121) # left side + >>> ax2 = fig.add_subplot(122) # right side + >>> ascent = datasets.ascent() + >>> result = ndimage.rank_filter(ascent, rank=42, size=20) + >>> ax1.imshow(ascent) + >>> ax2.imshow(result) + >>> plt.show() + """ + rank = operator.index(rank) + return _rank_filter(input, rank, size, footprint, output, mode, cval, + origin, 'rank', axes=axes) + + +@_ni_docstrings.docfiller +def median_filter(input, size=None, footprint=None, output=None, + mode="reflect", cval=0.0, origin=0, *, axes=None): + """ + Calculate a multidimensional median filter. + + Parameters + ---------- + %(input)s + %(size_foot)s + %(output)s + %(mode_reflect)s + %(cval)s + %(origin_multiple)s + axes : tuple of int or None, optional + If None, `input` is filtered along all axes. Otherwise, + `input` is filtered along the specified axes. + + Returns + ------- + median_filter : ndarray + Filtered array. Has the same shape as `input`. + + See Also + -------- + scipy.signal.medfilt2d + + Notes + ----- + For 2-dimensional images with ``uint8``, ``float32`` or ``float64`` dtypes + the specialised function `scipy.signal.medfilt2d` may be faster. It is + however limited to constant mode with ``cval=0``. + + Examples + -------- + >>> from scipy import ndimage, datasets + >>> import matplotlib.pyplot as plt + >>> fig = plt.figure() + >>> plt.gray() # show the filtered result in grayscale + >>> ax1 = fig.add_subplot(121) # left side + >>> ax2 = fig.add_subplot(122) # right side + >>> ascent = datasets.ascent() + >>> result = ndimage.median_filter(ascent, size=20) + >>> ax1.imshow(ascent) + >>> ax2.imshow(result) + >>> plt.show() + """ + return _rank_filter(input, 0, size, footprint, output, mode, cval, + origin, 'median', axes=axes) + + +@_ni_docstrings.docfiller +def percentile_filter(input, percentile, size=None, footprint=None, + output=None, mode="reflect", cval=0.0, origin=0, *, + axes=None): + """Calculate a multidimensional percentile filter. + + Parameters + ---------- + %(input)s + percentile : scalar + The percentile parameter may be less than zero, i.e., + percentile = -20 equals percentile = 80 + %(size_foot)s + %(output)s + %(mode_reflect)s + %(cval)s + %(origin_multiple)s + axes : tuple of int or None, optional + If None, `input` is filtered along all axes. Otherwise, + `input` is filtered along the specified axes. + + Returns + ------- + percentile_filter : ndarray + Filtered array. Has the same shape as `input`. + + Examples + -------- + >>> from scipy import ndimage, datasets + >>> import matplotlib.pyplot as plt + >>> fig = plt.figure() + >>> plt.gray() # show the filtered result in grayscale + >>> ax1 = fig.add_subplot(121) # left side + >>> ax2 = fig.add_subplot(122) # right side + >>> ascent = datasets.ascent() + >>> result = ndimage.percentile_filter(ascent, percentile=20, size=20) + >>> ax1.imshow(ascent) + >>> ax2.imshow(result) + >>> plt.show() + """ + return _rank_filter(input, percentile, size, footprint, output, mode, + cval, origin, 'percentile', axes=axes) + + +@_ni_docstrings.docfiller +def generic_filter1d(input, function, filter_size, axis=-1, + output=None, mode="reflect", cval=0.0, origin=0, + extra_arguments=(), extra_keywords=None): + """Calculate a 1-D filter along the given axis. + + `generic_filter1d` iterates over the lines of the array, calling the + given function at each line. The arguments of the line are the + input line, and the output line. The input and output lines are 1-D + double arrays. The input line is extended appropriately according + to the filter size and origin. The output line must be modified + in-place with the result. + + Parameters + ---------- + %(input)s + function : {callable, scipy.LowLevelCallable} + Function to apply along given axis. + filter_size : scalar + Length of the filter. + %(axis)s + %(output)s + %(mode_reflect)s + %(cval)s + %(origin)s + %(extra_arguments)s + %(extra_keywords)s + + Notes + ----- + This function also accepts low-level callback functions with one of + the following signatures and wrapped in `scipy.LowLevelCallable`: + + .. code:: c + + int function(double *input_line, npy_intp input_length, + double *output_line, npy_intp output_length, + void *user_data) + int function(double *input_line, intptr_t input_length, + double *output_line, intptr_t output_length, + void *user_data) + + The calling function iterates over the lines of the input and output + arrays, calling the callback function at each line. The current line + is extended according to the border conditions set by the calling + function, and the result is copied into the array that is passed + through ``input_line``. The length of the input line (after extension) + is passed through ``input_length``. The callback function should apply + the filter and store the result in the array passed through + ``output_line``. The length of the output line is passed through + ``output_length``. ``user_data`` is the data pointer provided + to `scipy.LowLevelCallable` as-is. + + The callback function must return an integer error status that is zero + if something went wrong and one otherwise. If an error occurs, you should + normally set the python error status with an informative message + before returning, otherwise a default error message is set by the + calling function. + + In addition, some other low-level function pointer specifications + are accepted, but these are for backward compatibility only and should + not be used in new code. + + """ + if extra_keywords is None: + extra_keywords = {} + input = numpy.asarray(input) + if numpy.iscomplexobj(input): + raise TypeError('Complex type not supported') + output = _ni_support._get_output(output, input) + if filter_size < 1: + raise RuntimeError('invalid filter size') + axis = normalize_axis_index(axis, input.ndim) + if (filter_size // 2 + origin < 0) or (filter_size // 2 + origin >= + filter_size): + raise ValueError('invalid origin') + mode = _ni_support._extend_mode_to_code(mode) + _nd_image.generic_filter1d(input, function, filter_size, axis, output, + mode, cval, origin, extra_arguments, + extra_keywords) + return output + + +@_ni_docstrings.docfiller +def generic_filter(input, function, size=None, footprint=None, + output=None, mode="reflect", cval=0.0, origin=0, + extra_arguments=(), extra_keywords=None): + """Calculate a multidimensional filter using the given function. + + At each element the provided function is called. The input values + within the filter footprint at that element are passed to the function + as a 1-D array of double values. + + Parameters + ---------- + %(input)s + function : {callable, scipy.LowLevelCallable} + Function to apply at each element. + %(size_foot)s + %(output)s + %(mode_reflect)s + %(cval)s + %(origin_multiple)s + %(extra_arguments)s + %(extra_keywords)s + + Notes + ----- + This function also accepts low-level callback functions with one of + the following signatures and wrapped in `scipy.LowLevelCallable`: + + .. code:: c + + int callback(double *buffer, npy_intp filter_size, + double *return_value, void *user_data) + int callback(double *buffer, intptr_t filter_size, + double *return_value, void *user_data) + + The calling function iterates over the elements of the input and + output arrays, calling the callback function at each element. The + elements within the footprint of the filter at the current element are + passed through the ``buffer`` parameter, and the number of elements + within the footprint through ``filter_size``. The calculated value is + returned in ``return_value``. ``user_data`` is the data pointer provided + to `scipy.LowLevelCallable` as-is. + + The callback function must return an integer error status that is zero + if something went wrong and one otherwise. If an error occurs, you should + normally set the python error status with an informative message + before returning, otherwise a default error message is set by the + calling function. + + In addition, some other low-level function pointer specifications + are accepted, but these are for backward compatibility only and should + not be used in new code. + + Examples + -------- + Import the necessary modules and load the example image used for + filtering. + + >>> import numpy as np + >>> from scipy import datasets + >>> from scipy.ndimage import generic_filter + >>> import matplotlib.pyplot as plt + >>> ascent = datasets.ascent() + + Compute a maximum filter with kernel size 10 by passing a simple NumPy + aggregation function as argument to `function`. + + >>> maximum_filter_result = generic_filter(ascent, np.amax, [10, 10]) + + While a maximmum filter could also directly be obtained using + `maximum_filter`, `generic_filter` allows generic Python function or + `scipy.LowLevelCallable` to be used as a filter. Here, we compute the + range between maximum and minimum value as an example for a kernel size + of 5. + + >>> def custom_filter(image): + ... return np.amax(image) - np.amin(image) + >>> custom_filter_result = generic_filter(ascent, custom_filter, [5, 5]) + + Plot the original and filtered images. + + >>> fig, axes = plt.subplots(3, 1, figsize=(4, 12)) + >>> plt.gray() # show the filtered result in grayscale + >>> top, middle, bottom = axes + >>> for ax in axes: + ... ax.set_axis_off() # remove coordinate system + >>> top.imshow(ascent) + >>> top.set_title("Original image") + >>> middle.imshow(maximum_filter_result) + >>> middle.set_title("Maximum filter, Kernel: 10x10") + >>> bottom.imshow(custom_filter_result) + >>> bottom.set_title("Custom filter, Kernel: 5x5") + >>> fig.tight_layout() + + """ + if (size is not None) and (footprint is not None): + warnings.warn("ignoring size because footprint is set", UserWarning, stacklevel=2) + if extra_keywords is None: + extra_keywords = {} + input = numpy.asarray(input) + if numpy.iscomplexobj(input): + raise TypeError('Complex type not supported') + origins = _ni_support._normalize_sequence(origin, input.ndim) + if footprint is None: + if size is None: + raise RuntimeError("no footprint or filter size provided") + sizes = _ni_support._normalize_sequence(size, input.ndim) + footprint = numpy.ones(sizes, dtype=bool) + else: + footprint = numpy.asarray(footprint, dtype=bool) + fshape = [ii for ii in footprint.shape if ii > 0] + if len(fshape) != input.ndim: + raise RuntimeError('filter footprint array has incorrect shape.') + for origin, lenf in zip(origins, fshape): + if (lenf // 2 + origin < 0) or (lenf // 2 + origin >= lenf): + raise ValueError('invalid origin') + if not footprint.flags.contiguous: + footprint = footprint.copy() + output = _ni_support._get_output(output, input) + mode = _ni_support._extend_mode_to_code(mode) + _nd_image.generic_filter(input, function, footprint, output, mode, + cval, origins, extra_arguments, extra_keywords) + return output +
+ +
+ + + + + +
+ + + + +
+
+ +
+ +
+
+
+ + + + + +
+ + +
+ + \ No newline at end of file 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/binder_badge_logo.svg b/_static/binder_badge_logo.svg new file mode 100644 index 0000000..327f6b6 --- /dev/null +++ b/_static/binder_badge_logo.svg @@ -0,0 +1 @@ + launchlaunchbinderbinder \ No newline at end of file diff --git a/_static/broken_example.png b/_static/broken_example.png new file mode 100644 index 0000000000000000000000000000000000000000..4fea24e7df4781c2c32c8d7995511ac89e953145 GIT binary patch literal 21404 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 { + 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..1823c1b --- /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: false, + SOURCELINK_SUFFIX: '.txt', + 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/jupyterlite_badge_logo.svg b/_static/jupyterlite_badge_logo.svg new file mode 100644 index 0000000..5de36d7 --- /dev/null +++ b/_static/jupyterlite_badge_logo.svg @@ -0,0 +1,3 @@ + + +launchlaunchlitelite \ No newline at end of file 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/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/no_image.png b/_static/no_image.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2d48d5d3f0044cf0399b3608d8eb5db6f9d12d GIT binary patch literal 4315 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 HW8D7$6^1w` literal 0 HcmV?d00001 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/pydata-custom.css b/_static/pydata-custom.css new file mode 100644 index 0000000..02bf321 --- /dev/null +++ b/_static/pydata-custom.css @@ -0,0 +1,56 @@ +/*Tweaks to the Pydata default CSS */ + +/*No yellow background highlight when targeted by summary tables */ +/*dt:target { background-color: #f8f8f8; border: 1px solid black, }*/ +dt:target { background: transparent;} +/*More space between H1s and signatures in API reference*/ +h1 { margin-bottom: 40px; } + +/*No line underneath summary table headings (clashes with line above first member)*/ +p.rubric { border-bottom: 0px; } + +/*Fit to maxwidth*/ + +.bd-content { + flex-grow: 1; + max-width: 100%; +} + + +/* from sphinx gallery*/ + +.wy-nav-top { + background-color: #FF8C38 !important; +} +.wy-side-nav-search { + background-color: #FF8C38 !important; +} + + +div[class^="highlight"] a { + background-color: #E6E6E6; +} + +div[class^="highlight"] a:hover { + background-color: #ABECFC; +} + +.rst-versions { + position: relative; +} +.rst-versions.shift-up { + overflow-y: visible; +} + +a[class^="sphx-glr-backref-module-"] { + text-decoration: none; + background-color: rgba(0, 0, 0, 0) !important; +} +a.sphx-glr-backref-module-sphinx_gallery { + text-decoration: underline; + background-color: #E6E6E6; +} + +.anim-state label { + display: inline-block; +} \ No newline at end of file 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/scripts/bootstrap.js b/_static/scripts/bootstrap.js new file mode 100644 index 0000000..bda8a60 --- /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:()=>w,afterRead:()=>b,afterWrite:()=>T,applyStyles:()=>D,arrow:()=>G,auto:()=>r,basePlacements:()=>a,beforeMain:()=>v,beforeRead:()=>g,beforeWrite:()=>E,bottom:()=>n,clippingParents:()=>h,computeStyles:()=>et,createPopper:()=>St,createPopperBase:()=>Lt,createPopperLite:()=>Dt,detectOverflow:()=>gt,end:()=>c,eventListeners:()=>nt,flip:()=>_t,hide:()=>yt,left:()=>o,main:()=>y,modifierPhases:()=>C,offset:()=>wt,placements:()=>m,popper:()=>u,popperGenerator:()=>kt,popperOffsets:()=>Et,preventOverflow:()=>At,read:()=>_,reference:()=>f,right:()=>s,start:()=>l,top:()=>i,variationPlacements:()=>p,viewport:()=>d,write:()=>A});var i="top",n="bottom",s="right",o="left",r="auto",a=[i,n,s,o],l="start",c="end",h="clippingParents",d="viewport",u="popper",f="reference",p=a.reduce((function(t,e){return t.concat([e+"-"+l,e+"-"+c])}),[]),m=[].concat(a,[r]).reduce((function(t,e){return t.concat([e,e+"-"+l,e+"-"+c])}),[]),g="beforeRead",_="read",b="afterRead",v="beforeMain",y="main",w="afterMain",E="beforeWrite",A="write",T="afterWrite",C=[g,_,b,v,y,w,E,A,T];function O(t){return t?(t.nodeName||"").toLowerCase():null}function x(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function k(t){return t instanceof x(t).Element||t instanceof Element}function L(t){return t instanceof x(t).HTMLElement||t instanceof HTMLElement}function S(t){return"undefined"!=typeof ShadowRoot&&(t instanceof x(t).ShadowRoot||t instanceof ShadowRoot)}const D={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];L(s)&&O(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}),{});L(n)&&O(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function $(t){return t.split("-")[0]}var I=Math.max,N=Math.min,P=Math.round;function M(){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 j(){return!/^((?!chrome|android).)*safari/i.test(M())}function F(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&L(t)&&(s=t.offsetWidth>0&&P(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&P(n.height)/t.offsetHeight||1);var r=(k(t)?x(t):window).visualViewport,a=!j()&&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 H(t){var e=F(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 B(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&S(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function W(t){return x(t).getComputedStyle(t)}function z(t){return["table","td","th"].indexOf(O(t))>=0}function R(t){return((k(t)?t.ownerDocument:t.document)||window.document).documentElement}function q(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(S(t)?t.host:null)||R(t)}function V(t){return L(t)&&"fixed"!==W(t).position?t.offsetParent:null}function Y(t){for(var e=x(t),i=V(t);i&&z(i)&&"static"===W(i).position;)i=V(i);return i&&("html"===O(i)||"body"===O(i)&&"static"===W(i).position)?e:i||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&L(t)&&"fixed"===W(t).position)return null;var i=q(t);for(S(i)&&(i=i.host);L(i)&&["html","body"].indexOf(O(i))<0;){var n=W(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 K(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Q(t,e,i){return I(t,N(e,i))}function X(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function U(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const G={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,r=t.state,l=t.name,c=t.options,h=r.elements.arrow,d=r.modifiersData.popperOffsets,u=$(r.placement),f=K(u),p=[o,s].indexOf(u)>=0?"height":"width";if(h&&d){var m=function(t,e){return X("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:U(t,a))}(c.padding,r),g=H(h),_="y"===f?i:o,b="y"===f?n:s,v=r.rects.reference[p]+r.rects.reference[f]-d[f]-r.rects.popper[p],y=d[f]-r.rects.reference[f],w=Y(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=Q(T,O,C),k=f;r.modifiersData[l]=((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)))&&B(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function J(t){return t.split("-")[1]}var Z={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tt(t){var e,r=t.popper,a=t.popperRect,l=t.placement,h=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=o,C=i,O=window;if(p){var k=Y(r),L="clientHeight",S="clientWidth";k===x(r)&&"static"!==W(k=R(r)).position&&"absolute"===u&&(L="scrollHeight",S="scrollWidth"),(l===i||(l===o||l===s)&&h===c)&&(C=n,y-=(g&&k===O&&O.visualViewport?O.visualViewport.height:k[L])-a.height,y*=f?1:-1),l!==o&&(l!==i&&l!==n||h!==c)||(T=s,b-=(g&&k===O&&O.visualViewport?O.visualViewport.width:k[S])-a.width,b*=f?1:-1)}var D,$=Object.assign({position:u},p&&Z),I=!0===m?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:P(i*s)/s||0,y:P(n*s)/s||0}}({x:b,y},x(r)):{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 et={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:$(e.placement),variation:J(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,tt(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,tt(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 it={passive:!0};const nt={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=x(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,it)})),a&&l.addEventListener("resize",i.update,it),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,it)})),a&&l.removeEventListener("resize",i.update,it)}},data:{}};var st={left:"right",right:"left",bottom:"top",top:"bottom"};function ot(t){return t.replace(/left|right|bottom|top/g,(function(t){return st[t]}))}var rt={start:"end",end:"start"};function at(t){return t.replace(/start|end/g,(function(t){return rt[t]}))}function lt(t){var e=x(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ct(t){return F(R(t)).left+lt(t).scrollLeft}function ht(t){var e=W(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function dt(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:L(t)&&ht(t)?t:dt(q(t))}function ut(t,e){var i;void 0===e&&(e=[]);var n=dt(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=x(n),r=s?[o].concat(o.visualViewport||[],ht(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ut(q(r)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function pt(t,e,i){return e===d?ft(function(t,e){var i=x(t),n=R(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=j();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ct(t),y:l}}(t,i)):k(e)?function(t,e){var i=F(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):ft(function(t){var e,i=R(t),n=lt(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=I(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=I(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ct(t),l=-n.scrollTop;return"rtl"===W(s||i).direction&&(a+=I(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(R(t)))}function mt(t){var e,r=t.reference,a=t.element,h=t.placement,d=h?$(h):null,u=h?J(h):null,f=r.x+r.width/2-a.width/2,p=r.y+r.height/2-a.height/2;switch(d){case i:e={x:f,y:r.y-a.height};break;case n:e={x:f,y:r.y+r.height};break;case s:e={x:r.x+r.width,y:p};break;case o:e={x:r.x-a.width,y:p};break;default:e={x:r.x,y:r.y}}var m=d?K(d):null;if(null!=m){var g="y"===m?"height":"width";switch(u){case l:e[m]=e[m]-(r[g]/2-a[g]/2);break;case c:e[m]=e[m]+(r[g]/2-a[g]/2)}}return e}function gt(t,e){void 0===e&&(e={});var o=e,r=o.placement,l=void 0===r?t.placement:r,c=o.strategy,p=void 0===c?t.strategy:c,m=o.boundary,g=void 0===m?h:m,_=o.rootBoundary,b=void 0===_?d:_,v=o.elementContext,y=void 0===v?u:v,w=o.altBoundary,E=void 0!==w&&w,A=o.padding,T=void 0===A?0:A,C=X("number"!=typeof T?T:U(T,a)),x=y===u?f:u,S=t.rects.popper,D=t.elements[E?x:y],$=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ut(q(t)),i=["absolute","fixed"].indexOf(W(t).position)>=0&&L(t)?Y(t):t;return k(i)?e.filter((function(t){return k(t)&&B(t,i)&&"body"!==O(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=pt(t,i,n);return e.top=I(s.top,e.top),e.right=N(s.right,e.right),e.bottom=N(s.bottom,e.bottom),e.left=I(s.left,e.left),e}),pt(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}(k(D)?D:D.contextElement||R(t.elements.popper),g,b,p),P=F(t.elements.reference),M=mt({reference:P,element:S,strategy:"absolute",placement:l}),j=ft(Object.assign({},S,M)),H=y===u?j:P,z={top:$.top-H.top+C.top,bottom:H.bottom-$.bottom+C.bottom,left:$.left-H.left+C.left,right:H.right-$.right+C.right},V=t.modifiersData.offset;if(y===u&&V){var K=V[l];Object.keys(z).forEach((function(t){var e=[s,n].indexOf(t)>=0?1:-1,o=[i,n].indexOf(t)>=0?"y":"x";z[t]+=K[o]*e}))}return z}const _t={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,c=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=c.mainAxis,u=void 0===d||d,f=c.altAxis,g=void 0===f||f,_=c.fallbackPlacements,b=c.padding,v=c.boundary,y=c.rootBoundary,w=c.altBoundary,E=c.flipVariations,A=void 0===E||E,T=c.allowedAutoPlacements,C=e.options.placement,O=$(C),x=_||(O!==C&&A?function(t){if($(t)===r)return[];var e=ot(t);return[at(t),e,at(e)]}(C):[ot(C)]),k=[C].concat(x).reduce((function(t,i){return t.concat($(i)===r?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,l=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?m:c,d=J(n),u=d?l?p:p.filter((function(t){return J(t)===d})):a,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var g=f.reduce((function(e,i){return e[i]=gt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[$(i)],e}),{});return Object.keys(g).sort((function(t,e){return g[t]-g[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,I=!0,N=k[0],P=0;P=0,B=H?"width":"height",W=gt(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?s:o:F?n:i;L[B]>S[B]&&(z=ot(z));var R=ot(z),q=[];if(u&&q.push(W[j]<=0),g&&q.push(W[z]<=0,W[R]<=0),q.every((function(t){return t}))){N=M,I=!1;break}D.set(M,q)}if(I)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 bt(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 vt(t){return[i,s,n,o].some((function(e){return t[e]>=0}))}const yt={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=gt(e,{elementContext:"reference"}),a=gt(e,{altBoundary:!0}),l=bt(r,n),c=bt(a,s,o),h=vt(l),d=vt(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})}},wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,r=t.name,a=n.offset,l=void 0===a?[0,0]:a,c=m.reduce((function(t,n){return t[n]=function(t,e,n){var r=$(t),a=[o,i].indexOf(r)>=0?-1:1,l="function"==typeof n?n(Object.assign({},e,{placement:t})):n,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[o,s].indexOf(r)>=0?{x:h,y:c}:{x:c,y:h}}(n,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[r]=c}},Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=mt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},At={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,r=t.options,a=t.name,c=r.mainAxis,h=void 0===c||c,d=r.altAxis,u=void 0!==d&&d,f=r.boundary,p=r.rootBoundary,m=r.altBoundary,g=r.padding,_=r.tether,b=void 0===_||_,v=r.tetherOffset,y=void 0===v?0:v,w=gt(e,{boundary:f,rootBoundary:p,padding:g,altBoundary:m}),E=$(e.placement),A=J(e.placement),T=!A,C=K(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),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?i:o,B="y"===C?n:s,W="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[B],V=b?-L[W]/2:0,X=A===l?k[W]:L[W],U=A===l?-L[W]:-k[W],G=e.elements.arrow,Z=b&&G?H(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[B],nt=Q(0,k[W],Z[W]),st=T?k[W]/2-V-nt-et-D.mainAxis:X-nt-et-D.mainAxis,ot=T?-k[W]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&Y(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==P?void 0:P[C])?j:0,ct=z+ot-lt,ht=Q(b?N(R,z+st-lt-at):R,z,b?I(q,ct):q);x[C]=ht,M[C]=ht-z}if(u){var dt,ut="x"===C?i:o,ft="x"===C?n:s,pt=x[O],mt="y"===O?"height":"width",_t=pt+w[ut],bt=pt-w[ft],vt=-1!==[i,o].indexOf(E),yt=null!=(dt=null==P?void 0:P[O])?dt:0,wt=vt?_t: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=Q(t,e,i);return n>i?i:n}(wt,pt,Et):Q(b?wt:_t,pt,b?Et:bt);x[O]=At,M[O]=At-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Tt(t,e,i){void 0===i&&(i=!1);var n,s,o=L(e),r=L(e)&&function(t){var e=t.getBoundingClientRect(),i=P(e.width)/t.offsetWidth||1,n=P(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=R(e),l=F(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==O(e)||ht(a))&&(c=(n=e)!==x(n)&&L(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:lt(n)),L(e)?((h=F(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ct(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ct(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 Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function xt(){for(var t=arguments.length,e=new Array(t),i=0;i$t.has(t)&&$t.get(t).get(e)||null,remove(t,e){if(!$t.has(t))return;const i=$t.get(t);i.delete(e),0===i.size&&$t.delete(t)}},Nt="transitionend",Pt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Mt=t=>{t.dispatchEvent(new Event(Nt))},jt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ft=t=>jt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Pt(t)):null,Ht=t=>{if(!jt(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},Bt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),Wt=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?Wt(t.parentNode):null},zt=()=>{},Rt=t=>{t.offsetHeight},qt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Vt=[],Yt=()=>"rtl"===document.documentElement.dir,Kt=t=>{var e;e=()=>{const e=qt();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?(Vt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Vt)t()})),Vt.push(e)):e()},Qt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Xt=(t,e,i=!0)=>{if(!i)return void Qt(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(Nt,o),Qt(t))};e.addEventListener(Nt,o),setTimeout((()=>{s||Mt(e)}),n)},Ut=(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))])},Gt=/[^.]*(?=\..*)\.|.*/,Jt=/\..*/,Zt=/::\d+$/,te={};let ee=1;const ie={mouseenter:"mouseover",mouseleave:"mouseout"},ne=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 se(t,e){return e&&`${e}::${ee++}`||t.uidEvent||ee++}function oe(t){const e=se(t);return t.uidEvent=e,te[e]=te[e]||{},te[e]}function re(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function ae(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=de(t);return ne.has(o)||(o=t),[n,s,o]}function le(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=ae(e,i,n);if(e in ie){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=oe(t),c=l[a]||(l[a]={}),h=re(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=se(r,e.replace(Gt,"")),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 fe(s,{delegateTarget:r}),n.oneOff&&ue.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return fe(n,{delegateTarget:t}),i.oneOff&&ue.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 ce(t,e,i,n,s){const o=re(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function he(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&ce(t,e,i,r.callable,r.delegationSelector)}function de(t){return t=t.replace(Jt,""),ie[t]||t}const ue={on(t,e,i,n){le(t,e,i,n,!1)},one(t,e,i,n){le(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=ae(e,i,n),a=r!==e,l=oe(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))he(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(Zt,"");a&&!e.includes(s)||ce(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;ce(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=qt();let s=null,o=!0,r=!0,a=!1;e!==de(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=fe(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function fe(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 pe(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 me(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const ge={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${me(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${me(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]=pe(t.dataset[n])}return e},getDataAttribute:(t,e)=>pe(t.getAttribute(`data-bs-${me(e)}`))};class _e{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=jt(e)?ge.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...jt(e)?ge.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=jt(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 be extends _e{constructor(t,e){super(),(t=Ft(t))&&(this._element=t,this._config=this._getConfig(e),It.set(this._element,this.constructor.DATA_KEY,this))}dispose(){It.remove(this._element,this.constructor.DATA_KEY),ue.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Xt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return It.get(Ft(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 ve=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?Pt(i.trim()):null}return e},ye={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=>!Bt(t)&&Ht(t)))},getSelectorFromElement(t){const e=ve(t);return e&&ye.findOne(e)?e:null},getElementFromSelector(t){const e=ve(t);return e?ye.findOne(e):null},getMultipleElementsFromSelector(t){const e=ve(t);return e?ye.find(e):[]}},we=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;ue.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Bt(this))return;const s=ye.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ee=".bs.alert",Ae=`close${Ee}`,Te=`closed${Ee}`;class Ce extends be{static get NAME(){return"alert"}close(){if(ue.trigger(this._element,Ae).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(),ue.trigger(this._element,Te),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Ce.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)}}))}}we(Ce,"close"),Kt(Ce);const Oe='[data-bs-toggle="button"]';class xe extends be{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=xe.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}ue.on(document,"click.bs.button.data-api",Oe,(t=>{t.preventDefault();const e=t.target.closest(Oe);xe.getOrCreateInstance(e).toggle()})),Kt(xe);const ke=".bs.swipe",Le=`touchstart${ke}`,Se=`touchmove${ke}`,De=`touchend${ke}`,$e=`pointerdown${ke}`,Ie=`pointerup${ke}`,Ne={endCallback:null,leftCallback:null,rightCallback:null},Pe={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Me extends _e{constructor(t,e){super(),this._element=t,t&&Me.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Ne}static get DefaultType(){return Pe}static get NAME(){return"swipe"}dispose(){ue.off(this._element,ke)}_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(),Qt(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&&Qt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(ue.on(this._element,$e,(t=>this._start(t))),ue.on(this._element,Ie,(t=>this._end(t))),this._element.classList.add("pointer-event")):(ue.on(this._element,Le,(t=>this._start(t))),ue.on(this._element,Se,(t=>this._move(t))),ue.on(this._element,De,(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 je=".bs.carousel",Fe=".data-api",He="next",Be="prev",We="left",ze="right",Re=`slide${je}`,qe=`slid${je}`,Ve=`keydown${je}`,Ye=`mouseenter${je}`,Ke=`mouseleave${je}`,Qe=`dragstart${je}`,Xe=`load${je}${Fe}`,Ue=`click${je}${Fe}`,Ge="carousel",Je="active",Ze=".active",ti=".carousel-item",ei=Ze+ti,ii={ArrowLeft:ze,ArrowRight:We},ni={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},si={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class oi extends be{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=ye.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Ge&&this.cycle()}static get Default(){return ni}static get DefaultType(){return si}static get NAME(){return"carousel"}next(){this._slide(He)}nextWhenVisible(){!document.hidden&&Ht(this._element)&&this.next()}prev(){this._slide(Be)}pause(){this._isSliding&&Mt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?ue.one(this._element,qe,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void ue.one(this._element,qe,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?He:Be;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&&ue.on(this._element,Ve,(t=>this._keydown(t))),"hover"===this._config.pause&&(ue.on(this._element,Ye,(()=>this.pause())),ue.on(this._element,Ke,(()=>this._maybeEnableCycle()))),this._config.touch&&Me.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of ye.find(".carousel-item img",this._element))ue.on(t,Qe,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(We)),rightCallback:()=>this._slide(this._directionToOrder(ze)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Me(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=ii[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=ye.findOne(Ze,this._indicatorsElement);e.classList.remove(Je),e.removeAttribute("aria-current");const i=ye.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Je),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===He,s=e||Ut(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>ue.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Re).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),Rt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(Je),i.classList.remove(Je,c,l),this._isSliding=!1,r(qe)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return ye.findOne(ei,this._element)}_getItems(){return ye.find(ti,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Yt()?t===We?Be:He:t===We?He:Be}_orderToDirection(t){return Yt()?t===Be?We:ze:t===Be?ze:We}static jQueryInterface(t){return this.each((function(){const e=oi.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)}))}}ue.on(document,Ue,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=ye.getElementFromSelector(this);if(!e||!e.classList.contains(Ge))return;t.preventDefault();const i=oi.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===ge.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),ue.on(window,Xe,(()=>{const t=ye.find('[data-bs-ride="carousel"]');for(const e of t)oi.getOrCreateInstance(e)})),Kt(oi);const ri=".bs.collapse",ai=`show${ri}`,li=`shown${ri}`,ci=`hide${ri}`,hi=`hidden${ri}`,di=`click${ri}.data-api`,ui="show",fi="collapse",pi="collapsing",mi=`:scope .${fi} .${fi}`,gi='[data-bs-toggle="collapse"]',_i={parent:null,toggle:!0},bi={parent:"(null|element)",toggle:"boolean"};class vi extends be{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=ye.find(gi);for(const t of i){const e=ye.getSelectorFromElement(t),i=ye.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 _i}static get DefaultType(){return bi}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=>vi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(ue.trigger(this._element,ai).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(fi),this._element.classList.add(pi),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(pi),this._element.classList.add(fi,ui),this._element.style[e]="",ue.trigger(this._element,li)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(ue.trigger(this._element,ci).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Rt(this._element),this._element.classList.add(pi),this._element.classList.remove(fi,ui);for(const t of this._triggerArray){const e=ye.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(pi),this._element.classList.add(fi),ue.trigger(this._element,hi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ui)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ft(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(gi);for(const e of t){const t=ye.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=ye.find(mi,this._config.parent);return ye.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=vi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}ue.on(document,di,gi,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of ye.getMultipleElementsFromSelector(this))vi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Kt(vi);const yi="dropdown",wi=".bs.dropdown",Ei=".data-api",Ai="ArrowUp",Ti="ArrowDown",Ci=`hide${wi}`,Oi=`hidden${wi}`,xi=`show${wi}`,ki=`shown${wi}`,Li=`click${wi}${Ei}`,Si=`keydown${wi}${Ei}`,Di=`keyup${wi}${Ei}`,$i="show",Ii='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ni=`${Ii}.${$i}`,Pi=".dropdown-menu",Mi=Yt()?"top-end":"top-start",ji=Yt()?"top-start":"top-end",Fi=Yt()?"bottom-end":"bottom-start",Hi=Yt()?"bottom-start":"bottom-end",Bi=Yt()?"left-start":"right-start",Wi=Yt()?"right-start":"left-start",zi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class qi extends be{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=ye.next(this._element,Pi)[0]||ye.prev(this._element,Pi)[0]||ye.findOne(Pi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zi}static get DefaultType(){return Ri}static get NAME(){return yi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Bt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!ue.trigger(this._element,xi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add($i),this._element.classList.add($i),ue.trigger(this._element,ki,t)}}hide(){if(Bt(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(!ue.trigger(this._element,Ci,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._popper&&this._popper.destroy(),this._menu.classList.remove($i),this._element.classList.remove($i),this._element.setAttribute("aria-expanded","false"),ge.removeDataAttribute(this._menu,"popper"),ue.trigger(this._element,Oi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!jt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${yi.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:jt(this._config.reference)?t=Ft(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=St(t,this._menu,i)}_isShown(){return this._menu.classList.contains($i)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Bi;if(t.classList.contains("dropstart"))return Wi;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?ji:Mi:e?Hi:Fi}_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)&&(ge.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Qt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=ye.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Ht(t)));i.length&&Ut(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.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=ye.find(Ni);for(const i of e){const e=qi.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=[Ai,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:ye.prev(this,Ii)[0]||ye.next(this,Ii)[0]||ye.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}ue.on(document,Si,Ii,qi.dataApiKeydownHandler),ue.on(document,Si,Pi,qi.dataApiKeydownHandler),ue.on(document,Li,qi.clearMenus),ue.on(document,Di,qi.clearMenus),ue.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),Kt(qi);const Vi="backdrop",Yi="show",Ki=`mousedown.bs.${Vi}`,Qi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Xi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Qi}static get DefaultType(){return Xi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void Qt(t);this._append();const e=this._getElement();this._config.isAnimated&&Rt(e),e.classList.add(Yi),this._emulateAnimation((()=>{Qt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Yi),this._emulateAnimation((()=>{this.dispose(),Qt(t)}))):Qt(t)}dispose(){this._isAppended&&(ue.off(this._element,Ki),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=Ft(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),ue.on(t,Ki,(()=>{Qt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Xt(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),ue.off(document,Gi),ue.on(document,Ji,(t=>this._handleFocusin(t))),ue.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,ue.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=ye.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{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,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}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&&ge.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=ge.getDataAttribute(t,e);null!==i?(ge.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(jt(t))e(t);else for(const i of ye.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",En="show",An="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends be{constructor(t,e){super(t,e),this._dialog=ye.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||ue.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(ue.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(En),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){ue.off(window,hn),ue.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({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=ye.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Rt(this._element),this._element.classList.add(En),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,ue.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){ue.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),ue.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),ue.on(this._element,bn,(t=>{ue.one(this._element,_n,(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(wn),this._resetAdjustments(),this._scrollBar.reset(),ue.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(ue.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(An)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(An),this._queueCallback((()=>{this._element.classList.remove(An),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=Yt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Yt()?"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=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}ue.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=ye.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ue.one(e,pn,(t=>{t.defaultPrevented||ue.one(e,fn,(()=>{Ht(this)&&this.focus()}))}));const i=ye.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),we(On),Kt(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Bn=`click${xn}${kn}`,Wn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends be{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||ue.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),ue.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(ue.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),ue.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():ue.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){ue.on(this._element,Wn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():ue.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.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)}}))}}ue.on(document,Bn,'[data-bs-toggle="offcanvas"]',(function(t){const e=ye.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this))return;ue.one(e,Fn,(()=>{Ht(this)&&this.focus()}));const i=ye.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),ue.on(window,Ln,(()=>{for(const t of ye.find(In))qn.getOrCreateInstance(t).show()})),ue.on(window,Hn,(()=>{for(const t of ye.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),we(qn),Kt(qn);const Vn={"*":["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:[]},Yn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Kn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Qn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Yn.has(i)||Boolean(Kn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Xn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends _e{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xn}static get DefaultType(){return Un}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},Gn)}_setContent(t,e,i){const n=ye.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?jt(e)?this._putElementInTemplate(Ft(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)Qn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Qt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:Yt()?"left":"right",BOTTOM:"bottom",LEFT:Yt()?"right":"left"},as={allowList:Vn,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"},ls={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 cs extends be{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 as}static get DefaultType(){return ls}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),ue.off(this._element.closest(is),ns,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=ue.trigger(this._element,this.constructor.eventName("show")),e=(Wt(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),ue.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._queueCallback((()=>{ue.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!ue.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),ue.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(ts,es),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(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...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(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=Qt(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return St(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 Qt(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,...Qt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)ue.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");ue.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),ue.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},ue.on(this._element.closest(is),ns,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=ge.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.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:Ft(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=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}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=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Es={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class As extends be{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 ws}static get DefaultType(){return Es}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=Ft(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&&(ue.off(this._config.target,ms),ue.on(this._config.target,ms,bs,(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=ye.find(bs,this._config.target);for(const e of t){if(!e.hash||Bt(e))continue;const t=ye.findOne(decodeURI(e.hash),this._element);Ht(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(_s),this._activateParents(t),ue.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))ye.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of ye.parents(t,".nav, .list-group"))for(const t of ye.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=ye.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=As.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]()}}))}}ue.on(window,gs,(()=>{for(const t of ye.find('[data-bs-spy="scroll"]'))As.getOrCreateInstance(t)})),Kt(As);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Bs="show",Ws=".dropdown-toggle",zs=`:not(${Ws})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ys extends be{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),ue.on(this._element,Ss,(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?ue.trigger(e,Cs,{relatedTarget:t}):null;ue.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),ue.trigger(t,ks,{relatedTarget:e})):t.classList.add(Bs)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),ue.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Bs)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Bt(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=Ut(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ys.getOrCreateInstance(i).show())}_getChildren(){return ye.find(qs,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=ye.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=ye.findOne(t,i);s&&s.classList.toggle(n,e)};n(Ws,Fs),n(".dropdown-menu",Bs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:ye.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ys.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this)||Ys.getOrCreateInstance(this).show()})),ue.on(window,Ds,(()=>{for(const t of ye.find(Vs))Ys.getOrCreateInstance(t)})),Kt(Ys);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Us=`focusin${Ks}`,Gs=`focusout${Ks}`,Js=`hide${Ks}`,Zs=`hidden${Ks}`,to=`show${Ks}`,eo=`shown${Ks}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends be{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){ue.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),Rt(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),ue.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(ue.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),ue.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_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(){ue.on(this._element,Qs,(t=>this._onInteraction(t,!0))),ue.on(this._element,Xs,(t=>this._onInteraction(t,!1))),ue.on(this._element,Us,(t=>this._onInteraction(t,!0))),ue.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function lo(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}we(ao),Kt(ao),lo((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new cs(t,{delay:{show:500,hide:100}})}))})),lo((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),lo((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}))}))})(); +//# 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..e5bc157 --- /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

$o1$-A=pGFo^JPYNr>2ehu{ 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

~!!m1lQ9| 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⁣ zB>cfH2?dktx;=Tm_ny8IB6~mT2^MNx>j`Ky{-6)=C**f`S-cwxB{Uod<>mGBnEMt` z@+)PP>woTe+>*=!_q{XVHJBuy)?C>}>|XDJhgrwf4LkUH^Ac)348T)1$t0+5t2yPR zobh`8eUEmPfdoP=iY+y)ae#%hW$Uu}ql3}X3Q>3*ea_synZ_%u-r%gD1O z5xNNYS)?ZXMyj{i&1INnG_ctt&sPIDask7F!hfkRmO6wm!@$kGt2@?sSZIo*;agU0tX%@#hg44 zThoC3_mFu$+Gl^%s*%ZpoEFX8-3hU&af%i`n%$>zCS{p8XR5Dzyc1Hta>9rdN^OG_ z1}|LR#?>BB*zleF@T2KOg|K$N>FsMx%auGfd*+e&6|OGSivk_@!hKy<1X;6ZLs#nB)d{ggg4_D=PBEs)x|%r zgwd;Z39T$Paq|eZ6uS&c-uIj=4hP=1M*MsI_^kqJc?5?45aRDV9b%c0cCE^*gM+=s z5wi*2-xoU0rdR$&95VIIVnd$Dk9=~N{n;{a*Sn_YZHHaCcmFqF?+rJ;1JpVVkCe*Y zT0MM!##Cj~-|aW>tjFS2=enf#gtwNx@F%%S$!JmTlA2x;RsrW9G5|#) zw$kN{j0{4H-n6wFf}06ycK6-_NIpf6jw}#~k4CAzlu6j@S7RM5D!XKg&|>Fg9kpdH zFrrX&7_A9w)e2Wt#pkX4n_6vD<4~0-QPf#0!GvH+=K=3laifFBPmz8s^%eGBh?=N{ zlF`F9#22B*;(J0~7J1B-nz$;D*$ zMiquB?ILuKH&W+n?F|yH38bd}A?Jo5mD~u#GSRFD`BTz8ejSIe2lyIk2+q>S}$YQL5)D7hXKg zH}2+Aj*sp;+U1H(GdNuki?MY6GY|?4pu(ac<*PaGK8JBZt=6Ws(+}9*qNgS+YZ1un z&Z^i;t1HtcU#g~Te_W8e6Zh)#f%dTIptmasaF;f5*Rox^s00*9f z{C_S)5R+@d7n;Kcfs}FRd52Hk6sz!uLSC#JDNOm$hA(PA%~oQFF~zRL6sp-&XHDN# zn|pJhPfn4cPULUAcB*0*H==9=YltE>LBzu_#RbEMa2@gp>}G7}e~uNsNv*`>qmjb{ z7`M|hd&1D4^kA{P^9cXsEL|kp3HkB)KSTSR`4ML(N%^$t@R$wMj5-@^kpQRt5$LyA zG&xoF{&@Ydvy07*Q%yn_nX5D=V%r@u;kHN@u4- zEYDo+F%xu7X>tHp@PbkJ_69v>P@4>_ziwvRM10VUceKZ}+UeOMvVn5DfIhivE;_yX z!m0_aopdsdr{DJ^#P*}k?$3ZGG08s#SgR7qRS^oh7>i_g3xFoUf{3i>*!fQrAi=f= zwhGg_RdX5)@l|qT`eAlV*+{=GrSL?7eAAy~qz#bC9;kYA^sfNbCUgj8va&3T%E^S_ zS<7!p8v-9ZC;8-}3c0hg)GO1+nx`7ODybtJ?mnlIhg- zVcg~IvK-$=E}I6S%n*hRZa;eD=%CBVv8-Y4=uj^;Td_TnDsZ(TgU*le4_wpm?8kM; zhKjGe)NgEGA)H|y2Kd(AL+bi`9qZ5KARlLO%IiBProppTzkCJY4YeX-rW$u4V}vC+ zFAEeFmnLq!M|1}RTMp?Yl;8p!VfO1psHJSWQ=ms{crU!9){iL6aV|4JHk+sa?Fhbq z4sBO55&b`nU1eBQZMPmmLK;C*Qbn4frIC_GK)Sn2QaXlCK~RtuP>^nEkWfHMNy(vm zB!=cZ^M3C+*E#>r^KSGDpR+aa|^@Jd+AgTvp;rN4F=&sRB=v5l`b*w zn|$j&wNQAYGp*u|MvJpQh_f_e=3zJIB)43NH9A$5f9i#1-{d$PkgVDoSsL_hD3G6&!7aOBW|D-Y_x-rZ$uc=a`IPHdi&yjW;VKY0=hCyRD?AE+kA5YK6 z(WuJgaiMVgN-WE_#TpOn}hV; z&%-^GkzcrN{`7{D(H0gG2s}wofmUpBOrWj4?&kQ^ZTLX&^O~;6tM%RwTC3lwO9ivu zqZ^||)L;@u{>;3MrN?Z6v25iHS)r+atEqIS(&tkgK%t}aO&r*JHGxvRr^$Ly^oaf2zvWi7uLf@x4Zja#wDw|@Bx`oyO z>-N`z=z~uUUtSm{J>rrnf?osOX6&Y^gFHDK~+&QOGAnc